在打开的对话框中未打印JSF验证错误

时间:2018-03-13 23:00:38

标签: jsf-2

我必须验证表单中的字段不为空。

问题是form位于JQueryUI dialog(因为我不知道如何在JSF中创建" windows"所以当我点击commandButton页面已刷新,JQuery对话框丢失。刷新后,我可以通过查看源代码看到页面代码中打印的错误消息。如果我在ajax中使用commandButton,那么页面不会刷新,但我不会打印信息,而是将其作为一种" Javascript警报"在浏览器中。

如何在不刷新页面的情况下收到错误消息?

<h:inputText value="#{myController.name}" id="myname" required="true" requiredMessage="Name required">
    <f:ajax />
</h:inputText>
<h:message errorClass="..." for="myname" />

注意:This看起来与我的问题类似,但我认为解决方案不是我想要的。

注意:我没有使用像Primefaces等其他库

1 个答案:

答案 0 :(得分:0)

通过评论的提示,我能够以这种方式解决它:

  • commandButton中,对ajaxrender使用executerender不起作用):

                        <h:commandButton id="...." action="#{myController.doSomething()}" type="submit" value="Do something">
                            <f:ajax execute="@form" render="@form" />
                        </h:commandButton>
    
  • myController中创建一个在myController.doSomething()结束时调用的“pageUpdate()”方法。这样,在操作之后,页面将刷新并且对话框消失。当然还有其他方法可以关闭对话框,但是当对话框操作中没有错误时,我可以方便地更新页面,因此内存中的对象也会更新。

我认为在ajax调用返回错误后,JQuery对话框会混乱我的样式,所以如果你这样做,请检查一下。