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

JSF Validation error not printed in open dialog

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

问题是 formJQueryUI dialog 中(因为我不知道如何在 JSF 中创建 "windows"),所以当我单击 commandButton 页面 已刷新 并且 JQuery 对话框丢失。刷新后,通过查看源代码可以看到页面代码中打印了错误信息。如果我在 commandButton 中使用 ajax,则页面不会刷新,但我不会打印消息,我在浏览器中将其作为一种 "Javascript alert" 得到。

如何在不刷新页面的情况下获取错误信息?

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

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

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

根据评论的提示,我是这样解决的:

  • commandButton 中,将 ajaxrenderexecute 一起使用(render 不没用):

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

我认为 JQuery 对话框在 ajax 错误调用 returns 之后弄乱了我的样式,所以请检查一下是否这样做。