我们如何使用多个<;h:信息>;标签或<;h:消息>;单个JSF页面中的标签?

我们如何使用多个<;h:信息>;标签或<;h:消息>;单个JSF页面中的标签?,jsf,Jsf,我的问题是在一个JSF页面中有两个表单,每个表单都有或标记。正如我们所知,message/messages标签打印任何验证错误,因此,假设我将两个表单中的任何一个表单的字段留空,则应打印“fields cannot leave blank”或某种消息。它给出了这个信息,但它给出的信息是两种形式的两倍。因此,我在两个表单中的每个表单上都看到了相同的错误/验证消息 因此,我需要的是或标记应该只为它们各自的表单显示一次错误/验证消息 因此,任何帮助都将不胜感激 如果您使用的是JSF2,那么您可以通过a

我的问题是在一个JSF页面中有两个表单,每个表单都有
标记。正如我们所知,message/messages标签打印任何验证错误,因此,假设我将两个表单中的任何一个表单的字段留空,则应打印“fields cannot leave blank”或某种消息。它给出了这个信息,但它给出的信息是两种形式的两倍。因此,我在两个表单中的每个表单上都看到了相同的错误/验证消息

因此,我需要的是
标记应该只为它们各自的表单显示一次错误/验证消息


因此,任何帮助都将不胜感激

如果您使用的是JSF2,那么您可以通过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>

顺便说一句,
不应该有这个问题,这与你在问题中的意思相反。

我警告你在一个页面中使用两个表单,因为ie不支持这个feature@mucayufa如果IE不支持一个页面上的两个表单,那么这将是IE中的一个主要缺陷。可能您的目标是嵌套表单,它不是有效的HTML,并且可能/将在所有浏览器中导致错误。您是否使用嵌套表单?请提供页面的jsf代码示例。您是否尝试过
@Mattı不表示嵌套形式。我在一个页面中使用了两个单独的表单,但是ie兼容性问题出现了。@BalusC:当我使用你的第二个解决方案时,我得到了以下例外
javax.servlet.ServletException:Component ID j_idt171:j_idt99已在视图中找到。
@Rasoul:显然您出于某种原因将其绑定到共享bean属性。不要将它绑定到bean,绝对不要绑定到由多个组件共享的属性。答案中的代码按原样完整。不要使用
#{bean.form1}
等。只需使用
{form1}
。另请参见@BalusC,您的猜测是正确的。我在一个jsf页面中有两个表单,并使用一个共享bean处理这些表单。我为两个
设置了id。Form1和Form2。它返回我以下异常:
组件ID联系人:在视图中已找到form1Mess。
您认为除了单独的表单bean之外没有任何解决方案?@Rasoul:不要使用
{bean.form1}
等等。只需使用
{form1}
。您根本不需要bean中的这些组件。@BalusC:我只使用#{form1}。查看我的代码:
<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>