16

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

已保存对象的非 JSF 验证是通过返回错误消息列表的方法完成的。如果验证失败,错误消息将与 FacesMessage 一起显示。我应该怎么做objectsBean.validate才能触发 if else 子句oncomplete

<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>
4

1 回答 1

25

如果由于某种原因使用 JSF 内置验证工具(即仅使用ValidatorException以通常方式在其中包含所需面孔消息的验证器)确实不是一种选择(我真的会三思而后行,不,三次关于围绕 JSF 验证工具工作),那么您总是可以用来FacesContext#validationFailed()向 JSF 发出验证通常失败的信号,这正是 JSF 验证工具在ValidatorException捕获 a 时在幕后所做的事情。

FacesContext.getCurrentInstance().validationFailed();
于 2013-01-18T15:08:05.320 回答