如何在验证成功时执行a4j:commandLink oncomplete?

d-m*_*man 10 validation richfaces jsf-2

我正在使用JSF2,Richfaces4和Spring.我有一个命令链接.执行时我保存记录,完成后我执行搜索以显示如下代码的记录.问题是fireSearch()即使表单中存在验证错误,仍会执行oncomplete.我fireSearch()只有在记录成功保存后才需要执行.

如果验证成功,我怎样才能完成?

<a4j:commandLink styleClass="button" action="#{myBean.save}" render="detail_form" execute="@form" oncomplete="fireSearch()">
<span> Save </span>
</a4j:commandLink>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 19

RichFaces支持oncomplete属性中基于请求的EL评估.因此,您应该能够打印FacesContext#isValidationFailed(),就好像它是一个JS条件.

例如,

oncomplete="if (#{!facesContext.validationFailed}) fireSearch()"
Run Code Online (Sandbox Code Playgroud)

如果验证失败,最终会导致

oncomplete="if (false) fireSearch()"
Run Code Online (Sandbox Code Playgroud)

因此不会调用该函数.