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
- Mojarra 2.2.15
- 野蝇 10.1.0.Final
这是 OmniFaces 2.6.8 中的 bug,它已在 OmniFaces 2.6.9 中修复(但未在变更日志中提及)。交换OmniFaces的依赖版本就可以解决描述的问题。
更新: 注意,还有一个 related issue, which was fixed in 2.7.1.
我有一个项目 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
- Mojarra 2.2.15
- 野蝇 10.1.0.Final
这是 OmniFaces 2.6.8 中的 bug,它已在 OmniFaces 2.6.9 中修复(但未在变更日志中提及)。交换OmniFaces的依赖版本就可以解决描述的问题。
更新: 注意,还有一个 related issue, which was fixed in 2.7.1.