我正在使用 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 再次工作。
知道为什么会这样吗?
最佳答案
您通过立即返回 true
来覆盖默认的 ajax click
事件。而是让它只在 false
时返回。
onclick="if (!validateNewAbs()) return false;"
但是,更好的方法是使用 JSF 内置/自定义验证器在服务器端进行验证。这样您就不需要在两侧重复验证,并且验证仍然可以在禁用 JS 的情况下工作。
关于javascript - 结合 JS 客户端验证时,不会触发 JSF ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416695/