OmniFaces <o:tagAttribute> 在某些情况下不工作

OmniFaces <o:tagAttribute> not working under some circumstances

我有一个项目 OmniFaces 2.6.8 is used. In this project I have some facelets tag files, which use OmniFaces' <o:tagAttribute>。对于我的一些标记文件,我注意到 奇怪的行为 ,这意味着 <o:tagAttribute> 似乎不起作用,我得到

IllegalStateException: Duplicate component ID 'myForm:outer' found in view.

因此,因为我的外部标签的 id 属性没有被清除,因此在内部标签中被重复使用(就像在 OmniFaces 的展示案例中展示的那样)。

我可以用两个非常简单的标记文件重现这个问题。以下是我首先使用这些标记文件的方式:

<h:form id="myForm">
  <my:outer id="outer">
    <my:inner />
  </my:outer>
</h:form>

这里是标签文件的完整代码。

outer.xhtml:

<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:o="http://omnifaces.org/ui">

  <o:tagAttribute name="id" />

  <h:panelGroup id="#{id}">
    <ui:insert/>
  </h:panelGroup>

</ui:composition>

inner.xhtml:

<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:o="http://omnifaces.org/ui">

  <o:tagAttribute name="id" />

  <h:inputText id="#{id}">
    <ui:insert/>
  </h:inputText>

</ui:composition>

我注意到,只要我将 inner.xhtml 更改为使用 <h:outputText> 而不是 <h:inputText>,问题就不会出现。当我将 value 属性添加到 <h:inputText>.

时,它也会消失

这是 OmniFaces 中的错误,还是我做错了什么?
更新:我在 OmniFaces bugtracker 中创建了一个 issue。)

我的环境

这是 OmniFaces 2.6.8 中的 bug,它已在 OmniFaces 2.6.9 中修复(但未在变更日志中提及)。交换OmniFaces的依赖版本就可以解决描述的问题。

更新: 注意,还有一个 related issue, which was fixed in 2.7.1.