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

时间:2011-12-07 14:12:56

标签: javascript ajax validation jsf jsf-2

我正在使用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再次工作。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

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

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

然而,最好只使用JSF内置/自定义验证器在服务器端进行验证。这样您就不需要将验证重复到双方,并且验证仍然适用于JS禁用。