Primefaces对话窗口 - 验证关闭对话框

时间:2011-03-30 20:32:32

标签: jsf primefaces

我在primefaces对话框上有一个输入表单,我有服务器端valdation,当用户点击

时检查输入字段

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

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

2 个答案:

答案 0 :(得分:2)

我自己没有尝试过,但您可以根据验证消息的存在来切换对话框的可见性:

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

答案 1 :(得分: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语句并向用户显示该对话框。