2

我有一个 PrimeFaces <p:dialog>。该对话框有一个输入字段和一个命令按钮。命令按钮在没有 ajax 的情况下发布表单(例如通过简单模式上传文件)。如果输入字段上存在验证错误,则<p:message>对话框中的错误会正确显示,但是由于非 ajax 回发,对话框会关闭。因为我没有使用 ajax,所以我不能真正使用技巧来保持对话框打开,如在提交后发生验证错误时保持 p:dialog openoncomplete中回答的那样

如果出现验证错误,在非 ajax 提交后保持对话框打开(或重新打开)的选项有哪些?

4

1 回答 1

4

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

例如,如果有发并且验证失败

<p:dialog ... visible="#{facesContext.postback and facesContext.validationFailed}">

或者,如果同一页面中有更多表单,并且您只想检查对话框自己的表单是否已提交

<p:dialog ... visible="#{dialogForm.submitted and facesContext.validationFailed}">
    <h:form binding="#{dialogForm}">

注意:#{facesContext.validationFailed}默认情况下,只有当您使用 JSF 内置验证工具(required="true"<f:validateXxx>等)和/或使用完全有价值的Validator实现时,才能正常工作。例如,如果您在操作方法中手动验证并手动添加面部消息,那么这将不起作用,除非您隐式调用FacesContext#validationFailed()自己。

也可以看看:

于 2013-06-18T16:31:40.570 回答