【问题标题】:JSF ajax request is not fired when combined with JS client-side validation与 JS 客户端验证结合使用时,不会触发 JSF ajax 请求
【发布时间】:2012-01-15 01:05:52
【问题描述】:

我正在使用 JSF 2.0 和 primefaces。 我有一个页面,其中一个表单中有多个输入,还有一个使用 ajax 将新记录添加到表中的按钮。一切正常。然后我使用 JavaScript 添加了客户端验证。这是命令按钮的代码:

<p:commandButton value="Add" actionListener="#{reqAbsences.addPreLeaveDemand}"
                 onclick="return validateNewAbs()"
                 update="tableForm inputForm errorForm" />

如果验证失败,它会按预期工作,并且不会在表中添加记录。 通过验证时出现问题:添加了记录,但重新加载了页面(ajax 不起作用)。如果我删除 onclick="return validateNewAbs()" ajax 再次工作。

知道为什么会这样吗?

【问题讨论】:

    标签: javascript ajax validation jsf jsf-2


    【解决方案1】:

    您通过立即返回 true 来覆盖默认的 ajax click 事件。而是让它只返回false

    onclick="if (!validateNewAbs()) return false;"
    

    然而,更好的做法是使用 JSF 内置/自定义验证器在服务器端进行验证。这样你就不需要在两边重复验证,并且验证仍然可以在禁用 JS 的情况下工作。

    【讨论】:

    • 感谢@BalusC!这样可行!是的,我同意你的看法,但我的老板想要客户端验证,所以..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2017-05-08
    相关资源
    最近更新 更多