代码之家  ›  专栏  ›  技术社区  ›  Martin Höller

omnifaces<o:tagattribute>在某些情况下不工作

  •  1
  • Martin Höller  · 技术社区  · 6 年前

    我有一个项目 OmniFaces 2.6.8 facelets tag files ,使用OmniFaces <o:tagAttribute> .我注意到的一些标记文件 奇怪的行为 ,也就是说, <o:tagattribute> 好像不工作我

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

    因此,因为 id -外部标记的属性没有被清除,因此在内部标记中被重用(正如OmniFaces的show case中所示)。

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

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

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

    外部.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>
    

    内.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:输入文本> 是的。

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

    我的环境

    • 全向面2.6.8
    • 莫哈拉2.2.15
    • Wildfly 10.1.0.决赛
    1 回复  |  直到 6 年前
        1
  •  1
  •   Martin Höller    6 年前

    这是一个 bug 在OmniFaces2.6.8中,它在OmniFaces2.6.9中被修复(但在变更日志中没有提到)。交换OmniFaces的依赖版本就足以解决所描述的问题。

    更新: 注意,还有一个 related issue ,应该在2.7中修复(在编写本文时,2.7尚未发布)。

    推荐文章