JSF中的重复ID

时间:2014-06-27 16:24:29

标签: jsf jsf-2

我正在为我的JSF页面做一些自动代码生成。除此之外,还出现了重复ID的问题,我不明白。

以下代码段

<h:form id="myForm" prependId="true" >
    <p:panelGrid id="myPanel1">
         <p:panelGrid id="grid" />
    </p:panelGrid>
    <p:panelGrid id="myPanel2">
        <p:panelGrid id="grid" />
    </p:panelGrid>
</h:form>

会导致&#34; Duplicat ID错误&#34;,表示我的网页上已找到ID myForm:grid。我期望的是具有模式myForm:myPanel1:gridmyForm:myPanel2:grid

的两个不同ID

在组件树中,它显示了那些&#34; panelIDs&#34;

+id: myForm
   type: javax.faces.component.html.HtmlForm@3720dee3
        +id: myPanel1
         type: org.primefaces.component.panelgrid.PanelGrid@4f09255b
          +id: grid  <===============
           type: org.primefaces.component.panelgrid.PanelGrid@6173a1e6
        +id: myPanel2
         type: org.primefaces.component.panelgrid.PanelGrid@6e8a3505
          +id: grid  <===============
           type: org.primefaces.component.panelgrid.PanelGrid@339f13f5

这是什么问题?我怎样才能制作那些&#34;网格ID&#34;独特?


我正在使用 PrimeFaces 4.0 Mojarra 2.1.27 在GF 3.1.2.2上运行

(但是,当只使用计划JSF时也会出现问题,所以我不会将其标记为特殊的PrimeFaces问题)

1 个答案:

答案 0 :(得分:4)

只有components实施NamingContainercomponent identifiers为后代UIPanel提供名称空间。

控件可以在不执行此功能的情况下成为容器。 {{3}}个实例通常只控制布局,不会产生相关的开销。