打开的对话框中未打印 JSF 验证错误
JSF Validation error not printed in open dialog
我必须验证表单中的字段是否为空。
问题是 form
在 JQueryUI 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
中,将 ajax
与 render
和 execute
一起使用(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 之后弄乱了我的样式,所以请检查一下是否这样做。
我必须验证表单中的字段是否为空。
问题是 form
在 JQueryUI 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
中,将ajax
与render
和execute
一起使用(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 之后弄乱了我的样式,所以请检查一下是否这样做。