我们如何在单个JSF页面中使用多个<h:messages>标签或<h:message>标签?</h:message> </h:messages>

时间:2012-10-26 07:50:10

标签: jsf

我的问题是我在一个JSF页面中有两个表单,每个表单都有<h:message><h:messages>标记。我们知道消息/消息标签打印任何验证错误,所以会发生什么,假设我将2个表单中的任何一个的字段留空,它应该打印“字段不能留空”或某种消息。它给出了这个消息,但它提供了两次,因为有两种形式。所以我在两种形式中都看到了相同的错误/验证消息。

所以我需要的是<h:messages><h:message>标签只能为每个表单显示一次错误/验证消息!!

所以任何帮助都会非常感激!!

1 个答案:

答案 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> 不应该出现这个问题,与你在问题中暗示的相反。