我有一个主要对话框。该对话框有一个输入字段和一个按钮。该按钮发布没有ajax的表单。如果输入字段上存在验证错误,则对话框中的p:message
标记会正确显示错误,但由于表单发布,对话框会关闭。因为我没有使用ajax,所以我不能真正完成不完整的技巧来保持对话框打开。
如果出现验证错误,我可以选择在发布后保持对话框打开(或重新打开)?
感谢。
答案 0 :(得分:4)
使用对话框组件的visible
属性。如果在渲染期间将其设置为true
,则会在打开对话框的情况下呈现页面。
E.g。如果有postback和validation has failed:
<p:dialog ... visible="#{facesContext.postback and facesContext.validationFailed}">
或者,如果同一页面中有更多表单,并且您只想检查对话框自己的表单是否为submitted:
<p:dialog ... visible="#{dialogForm.submitted and facesContext.validationFailed}">
<h:form binding="#{dialogForm}">
注意:#{facesContext.validationFailed}
默认情况下当然只有在您使用JSF内置验证工具(required="true"
,<f:validateXxx>
等)和/或使用完全{{1}时才有效。实现。例如,您可以手动验证操作方法并手动添加面部消息,但这不起作用,除非您自己隐式调用FacesContext#validationFailed()
。