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

Javascript 当与JS客户端验证结合使用时,不会激发JSF ajax请求,javascript,ajax,validation,jsf,jsf-2,Javascript,Ajax,Validation,Jsf,Jsf 2,我正在使用JSF2.0和primefaces。 我有一个页面,表单中有几个输入,还有一个按钮,它使用ajax将新记录添加到表中。一切正常。然后,我使用JavaScript添加了客户端验证。这是命令按钮的代码: <p:commandButton value="Add" actionListener="#{reqAbsences.addPreLeaveDemand}" onclick="return validateNewAbs()"

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

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

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


知道为什么会发生这种情况吗?

您正在通过立即返回
true
来覆盖默认的ajax
单击
事件。而是使其仅在
false
时返回

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

不过,更好的方法是只使用JSF内置/自定义验证器在服务器端进行验证。这样,您就不需要将验证复制到两侧,并且在禁用JS的情况下,验证仍然可以工作。

谢谢@BalusC!真管用!是的,我同意你的看法,但是我的老板想要客户端验证,所以。。