JSF:两次包含相同的facelets标记时重复的组件ID异常

时间:2016-11-21 14:34:18

标签: jsf

我有一个像这样的facelets标签:

<ui:composition>
    <h:outputText value="#{label}"/>
    <h:inputText id="input" value="#{value}"/>
    <h:message for="input"/>
</ui:composition>

现在如果我在同一页面上两次包含这个facelets标签,我会得到一个例外,抱怨重复的组件ID。这里提出的一个解决方案https://stackoverflow.com/a/21572756/1785730是为id提供前缀。但是,我发现每次使用这个facelets标签时都需要提出一个id前缀很麻烦。顺便说一下,我不需要标签之外的h:inputText的id。

所以我想到了解决这个问题的两种方法:

  1. 有没有办法将h:message链接到h:inputText而不必指定id?
  2. 如果没有,我可以用NamingContainer包装标签。哪个元素适合这个?我不能在这里使用h:form,因为该标签已经进入了一种形式。

1 个答案:

答案 0 :(得分:-2)

您的页面应该是这样的

<f:view contracts="default" transient="false">
    <ui:composition template="/template.xhtml">
        <ui:define name="content">
            <h:form>
                inputs
            </h:form>
        </ui:define>
    </ui:composition>
</f:view>
在ui构图中你应该用ui定义并在其中形成和输入。