我的问题是我在一个JSF页面中有两个表单,每个表单都有<h:message>
或<h:messages>
标记。我们知道消息/消息标签打印任何验证错误,所以会发生什么,假设我将2个表单中的任何一个的字段留空,它应该打印“字段不能留空”或某种消息。它给出了这个消息,但它提供了两次,因为有两种形式。所以我在两种形式中都看到了相同的错误/验证消息。
所以我需要的是<h:messages>
或<h:message>
标签只能为每个表单显示一次错误/验证消息!!
所以任何帮助都会非常感激!!
答案 0 :(得分:3)
如果你正在使用JSF 2,那么你可以通过ajax提交和更新表单。这允许部分更新视图。
<h:form>
<h:messages />
...
<h:commandButton ...>
<f:ajax execute="@form" render="@form" />
</h:commandButton>
</h:form>
<h:form>
<h:messages />
...
<h:commandButton ...>
<f:ajax execute="@form" render="@form" />
</h:commandButton>
</h:form>
或者,如果您不想/不希望因某些非显而易见的原因使用ajax,或者仍在使用旧版JSF 1.x,请检查rendered
的{{1}}属性是否所需的表格是submitted或不是。
<h:messages>
顺便说一下<h:form binding="#{form1}">
<h:messages rendered="#{form1.submitted}" />
...
<h:commandButton ... />
</h:form>
<h:form binding="#{form2}">
<h:messages rendered="#{form2.submitted}" />
...
<h:commandButton ... />
</h:form>
不应该出现这个问题,与你在问题中暗示的相反。