如何在PrimeFaces oncomplete中触发args.validationFailed

时间:2013-01-18 15:02:41

标签: validation jsf primefaces

按下Save按钮时,应验证来自 actionsDialog 的数据。如果输入了所需信息并且有效,则会显示名为 reasonDialog 的第二个对话框。

使用返回错误消息列表的方法完成对已保存对象的非JSF验证。我的情况是验证失败,错误消息与FacesMessage一起显示。我应该如何在objectsBean.validate中触发来自oncomplete的if else子句?

<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true" 
    resizable="false" width="800" modal="true">
    <ui:include src="/WEB-INF/flows/custom-flow/genericObject.xhtml"/>
    <f:facet name="footer">
        <p:commandButton value="Save" update="msgs"
            oncomplete="if (args.validationFailed) {reasonDialog.hide()} else {reasonDialog.show()}"
            actionListener="#{objectsBean.validate}"/>
        <p:commandButton value="Cancel" immediate="true" oncomplete="actionsDialog.hide()" />
    </f:facet>
</p:dialog>

1 个答案:

答案 0 :(得分:20)

如果使用JSF内置验证工具(即只使用以ValidatorException通常方式抛出所需面部消息的验证器)由于某种原因真的不是一种选择(我真的会三思而后行,没有,关于使用JSF验证工具三次,然后你总是可以使用FacesContext#validationFailed()向JSF发出验证通常失败的信号,这正是JSF验证工具在ValidatorException时所做的事情。被抓住了。

FacesContext.getCurrentInstance().validationFailed();