【问题标题】:Primefaces Dialog Window - Validation closes dialogPrimefaces 对话框窗口 - 验证关闭对话框
【发布时间】:2011-03-30 20:32:32
【问题描述】:

我在 primefaces 对话框上有一个输入表单,并且我有服务器端验证,当用户单击一个输入字段时会检查输入字段

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

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

【问题讨论】:

标签: jsf primefaces


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我是 Richfaces 用户,他们的 modalPanel(相当于 &lt;p:dialog&gt; 提供了一个 showWhenRendered 属性,可能对您的情况有所帮助。

    不幸的是,&lt;p:dialog&gt; 似乎没有这样的功能。你能做的,就是玩一些 JavaScript 函数。

    首先,在 bean 中保留一个标志(一个布尔属性,初始化为 false),指示是否存在验证错误。让我们将此标志称为myBean.validationError。

    现在,在您的页面中,您可以添加一个 JavaScript 代码来检查此属性并最终显示对话框。类似的东西(把它放在页面的末尾,或者至少在对话框声明之后):

    <script type="text/javascript">
        if (#{myBean.validationError}) {
            // showDialog();
            myDialog.show();
        }
    </script>
    

    因此,在您的用例中,页面将重新显示,并且由于存在验证错误,该标志设置为 true。然后,if 语句被评估并将向用户显示对话框。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2012-12-29
      相关资源
      最近更新 更多