一尘不染

与JS客户端验证结合使用时,不会触发JSF ajax请求

ajax

我正在使用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,可以再次使用。

知道为什么会这样吗?


阅读 240

收藏
2020-07-26

共1个答案

一尘不染

您将click通过立即返回来覆盖默认的ajax 事件true。而是使其仅在上返回false

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

但是更好的方法是只使用JSF内置/自定义验证器在服务器端进行验证。这样,您无需将验证重复到双方,并且在禁用JS的情况下验证仍然可以使用。

2020-07-26