验证失败时保持 p:dialog
Keep p:dialog up when validation failed
我想要的是 window,如果发生验证错误,它会打开以输入有关新用户(名称、密码等)的一些信息,并保持打开状态。我已经尝试过其他帖子中的许多解决方案,但它就是无法保持打开状态。在我单击保存按钮后,它关闭了 window。当我重新打开对话框时,我可以在必填(和无效)字段上看到红色突出显示。我希望你们能帮助我..我正在努力解决这个问题 2 天...
<p:commandButton id="save" value="Save" udate="save" icon="ui-icon-disk"
ajax="false" validateClient="true"
action="#{userBean.addUser()}" oncomplete="if (args && !args.validationFailed) PF('newUser').hide()" />
<!-- oncomplete="if (!args.validationFailed &&args.saved) PF('newUser').hide();" -->
<p:commandButton id="cancel" value="Cancel" immidiate="true"
oncomplete="PF('newUser').hide()" />
罪魁祸首在这里,在您的保存按钮上:
<p:commandButton ... ajax="false" />
Ajax 在按钮上被禁用。此按钮将不再异步提交表单。此按钮将同步提交表单,这始终意味着刷新整个页面。换句话说,这个按钮的行为与没有 <f:ajax>
的标准 <h:commandButton>
完全一样。老式的 Web 1.0 表单提交。所有 ajax 相关属性,如 oncomplete
、update
、process
等都将被忽略。
从问题中不清楚为什么 ajax 在该按钮上被关闭。如果这只是一个粗心的错误或粗心的复制粘贴的结果,那么只需将其删除,世界就会好起来。
但是,如果您有正当的技术理由关闭它的 ajax(例如,因为在该表单中有一个 <p:fileUpload mode="simple">
),那么您需要使用 <p:dialog visible>
属性。有了这个,您可以控制是否应在页面加载时显示对话框。
例如
<p:dialog ... visible="#{formName.submitted and facesContext.validationFailed}">
<h:form binding="#{formName}">
</h:form>
</p:dialog>
注意:代码是原样。没有额外的 bean 属性。 For sure not on binding
!
我想要的是 window,如果发生验证错误,它会打开以输入有关新用户(名称、密码等)的一些信息,并保持打开状态。我已经尝试过其他帖子中的许多解决方案,但它就是无法保持打开状态。在我单击保存按钮后,它关闭了 window。当我重新打开对话框时,我可以在必填(和无效)字段上看到红色突出显示。我希望你们能帮助我..我正在努力解决这个问题 2 天...
<p:commandButton id="save" value="Save" udate="save" icon="ui-icon-disk"
ajax="false" validateClient="true"
action="#{userBean.addUser()}" oncomplete="if (args && !args.validationFailed) PF('newUser').hide()" />
<!-- oncomplete="if (!args.validationFailed &&args.saved) PF('newUser').hide();" -->
<p:commandButton id="cancel" value="Cancel" immidiate="true"
oncomplete="PF('newUser').hide()" />
罪魁祸首在这里,在您的保存按钮上:
<p:commandButton ... ajax="false" />
Ajax 在按钮上被禁用。此按钮将不再异步提交表单。此按钮将同步提交表单,这始终意味着刷新整个页面。换句话说,这个按钮的行为与没有 <f:ajax>
的标准 <h:commandButton>
完全一样。老式的 Web 1.0 表单提交。所有 ajax 相关属性,如 oncomplete
、update
、process
等都将被忽略。
从问题中不清楚为什么 ajax 在该按钮上被关闭。如果这只是一个粗心的错误或粗心的复制粘贴的结果,那么只需将其删除,世界就会好起来。
但是,如果您有正当的技术理由关闭它的 ajax(例如,因为在该表单中有一个 <p:fileUpload mode="simple">
),那么您需要使用 <p:dialog visible>
属性。有了这个,您可以控制是否应在页面加载时显示对话框。
例如
<p:dialog ... visible="#{formName.submitted and facesContext.validationFailed}">
<h:form binding="#{formName}">
</h:form>
</p:dialog>
注意:代码是原样。没有额外的 bean 属性。 For sure not on binding
!