2011-03-30 67 views
2

我有一个primefaces对话框的输入形式,我有服务器侧valdation它检查输入字段,当用户点击一个Primefaces对话窗口 - Valiation关闭对话框

<p:commandButton ajax="false" action="#{bean.validate}"/>

在验证结束后,我返回null以保持在同一页面上,但由于这是一个对话框,因此它会关闭。有没有什么办法可以在验证问题时保持对话框打开,在没有验证时关闭?

+0

请检查了这一点: http://stackoverflow.com/a/16069182/819651 (我相信这是一个重复) – 2013-04-18 09:52:45

回答

2

没有自己试试吧,但你可以根据验证消息的存在切换对话框的可见性:

<p:dialog visible=”#{not empty facesContext.messages}” ...> 
1

我是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语句进行评估,并向用户显示对话框。