我在primefaces对话框上有一个输入表单,我有服务器端valdation,当用户点击
时检查输入字段 <p:commandButton ajax="false" action="#{bean.validate}"/>
。
在我的验证结束时,我返回null
以保持同一页面,但由于这是一个对话框,因此它会关闭。有没有办法在有验证问题时保持对话框打开,在没有验证问题时关闭?
答案 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
语句并向用户显示该对话框。