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