JSF:两次包含相同facelets标记时出现重复组件id异常
我有一个facelets标签,如下所示:JSF:两次包含相同facelets标记时出现重复组件id异常,jsf,Jsf,我有一个facelets标签,如下所示: <ui:composition> <h:outputText value="#{label}"/> <h:inputText id="input" value="#{value}"/> <h:message for="input"/> </ui:composition> 现在,如果我在同一页上两次插入这个facelets标记,我会收到一个异常,抱怨组件ID重复。这里
<ui:composition>
<h:outputText value="#{label}"/>
<h:inputText id="input" value="#{value}"/>
<h:message for="input"/>
</ui:composition>
现在,如果我在同一页上两次插入这个facelets标记,我会收到一个异常,抱怨组件ID重复。这里提出的一个解决方案是为id提供一个前缀。然而,我发现每次使用facelets标记时都必须提供一个id前缀很麻烦。顺便说一句,我不需要标签外的h:inputText的id
所以我在想两种方法来解决这个问题:
你的页面应该是这样的
<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定义、表单和输入。为什么不从您提到的链接中选择“3”呢?我正在寻找一个更轻量级的解决方案。我更喜欢facelets。此外,复合组件最终也是一个组件。我的标签正好放在一个三列的h:panelGrid中。1)如果不是这样,您找到的答案就已经包含在其中了。2) 已包含在您找到的答案中。所以我真的不明白你为什么问这个重复的问题。如果你引用f:subview:的话,它有一个必需的id参数,这不会让我有任何进一步的了解。如果我不能按照我想要的方式来做,而我最好的选择是为我的标签设置一个id参数,这将是一个可接受的答案。当包含我的标签两次时,这将如何解决重复id异常?在每种形式中,每个标签都必须具有唯一的id。首先改进页面,您使用的是facelets合成,而没有主模板,其次,确保每个h:form组件中的内容都有唯一的id。