没有ajax的primefaces对话框验证

时间:2013-06-18 16:26:53

标签: jsf-2 primefaces

我有一个主要对话框。该对话框有一个输入字段和一个按钮。该按钮发布没有ajax的表单。如果输入字段上存在验证错误,则对话框中的p:message标记会正确显示错误,但由于表单发布,对话框会关闭。因为我没有使用ajax,所以我不能真正完成不完整的技巧来保持对话框打开。

如果出现验证错误,我可以选择在发布后保持对话框打开(或重新打开)?

感谢。

1 个答案:

答案 0 :(得分:4)

使用对话框组件的visible属性。如果在渲染期间将其设置为true,则会在打开对话框的情况下呈现页面。

E.g。如果有postbackvalidation 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()

另见: