如何在关闭对话框时从对话中删除p:message?

7
我有一个使用Primefaces p:dialog组件的JSF 2.0页面。用户可以在对话框中输入信息并单击保存/取消。 如果出现验证错误,则会在对话框中显示错误信息。 当他们关闭或取消对话框时,我希望任何p:message组件都被“清除”,即如果用户再次打开对话框,则不会看到旧的验证消息。
用例是:用户打开对话框,未填写所有必填字段,单击“保存”,则在对话框中显示必填字段错误消息。 用户单击取消以关闭对话框。 然后,用户再次点击打开对话框按钮。 我不希望他们看到先前的验证消息(目前他们可以看到)。
1个回答

8
在打开对话框之前,使用Ajax更新对话框组件。
例如:
<p:commandButton ... update=":dialog" oncomplete="dialog.open()" />

它不仅会清除消息,还会清除输入字段的值(或者至少保留具有正确默认值的值)。


有没有关于Primefaces最佳实践的资源?例如,您是如何知道这是共识的?(Primefaces论坛等) - BestPractices
1
是的。只需继续阅读Stack Overflow上的问题和答案,也许还有PrimeFaces论坛(我不看)。你会学到很多与当前情况无直接关系但可以应用于当前或未来项目的知识。 - BalusC
1
另一个原因是<p:dialog>可以通过modal="true"被重新定位到body的末尾。这样,在生成的HTML DOM树中,它就不再是表单的一部分了。对话框应该有自己的表单。 - BalusC
1
@BalusC,在我的情况下,PrimeFaces的验证消息已经被正确清除了,但是当对话框显示时,JSF验证(只有输入框上的红色边框)仍然存在。你有什么想法吗?谢谢。 - Rafael Orágio
1
@Rafael:确实不会清除无效状态,请前往https://dev59.com/wGcs5IYBdhLWcg3wu2Yp#12619890和https://dev59.com/qeo6XIcBkEYKwwoYSClJ#6845800。 - BalusC
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接