我有一个primefaces对话框的输入形式,我有服务器侧valdation它检查输入字段,当用户点击一个Primefaces对话窗口 - Valiation关闭对话框
<p:commandButton ajax="false" action="#{bean.validate}"/>
。
在验证结束后,我返回null
以保持在同一页面上,但由于这是一个对话框,因此它会关闭。有没有什么办法可以在验证问题时保持对话框打开,在没有验证时关闭?
我有一个primefaces对话框的输入形式,我有服务器侧valdation它检查输入字段,当用户点击一个Primefaces对话窗口 - Valiation关闭对话框
<p:commandButton ajax="false" action="#{bean.validate}"/>
。
在验证结束后,我返回null
以保持在同一页面上,但由于这是一个对话框,因此它会关闭。有没有什么办法可以在验证问题时保持对话框打开,在没有验证时关闭?
没有自己试试吧,但你可以根据验证消息的存在切换对话框的可见性:
<p:dialog visible=”#{not empty facesContext.messages}” ...>
我是RichFaces的用户,他们的modalPanel(的<p:dialog>
相当于提供了一个showWhenRendered
属性,可能是你的情况有所帮助。
不幸的是,<p:dialog>
似乎并不具有这样的功能。你可以做什么,是一些JavaScript功能的发挥。
首先,在bean中保留一个标志(一个布尔属性,初始化为false
),以指示是否存在验证错误。我们称这个标志myBean.validationError
。
现在,在您的页面中,您可以添加一个JavaScript代码来检查此属性并最终显示对话框。类似的东西(把它放在网页的结束,或者至少对话框声明之后):
<script type="text/javascript">
if (#{myBean.validationError}) {
// showDialog();
myDialog.show();
}
</script>
因此,在你使用的情况下,该页面将重新显示,并且因为有验证错误,旗设置为true
。然后,对if
语句进行评估,并向用户显示对话框。
请检查了这一点: http://stackoverflow.com/a/16069182/819651 (我相信这是一个重复) – 2013-04-18 09:52:45