1

我得到了一个 primefaces treeTable 并另外使用 c:forEach 来创建动态列。有没有办法从另一个表单中识别 c:forEach 中的那些列?(如果我在 c:forEach 中为我的列设置了一个 ID,我会收到一个重复的 ID 错误)

<h:form id="mmvUebersicht">
<p:treeTable id="massnahmenUebersichtTable"
            value="#{mmvOrganisationseinheitenTreeHandler.root}"
            var="_tree"
            selection="#{mmvOrganisationseinheitenTreeHandler.selectedNode}"
            selectionMode="single"
            scrollable="true"
            scrollHeight="500">

            <p:ajax event="expand" listener="#{mmvOrganisationseinheitenTreeHandler.onNodeExpand}" />
            <ui:remove>
            <p:ajax event="select" update=":mmvUebersichtEastForm" listener="#{mmvOrganisationseinheitenTreeHandler.onNodeSelect}" />
            </ui:remove>

        <p:column headerText="#{labels.abteilung}" style="width:250px">
            <p:outputLabel value="#{_tree.id} #{_tree.shortNameName}"/>
        </p:column>

        <p:column headerText="#{labels.funktion}" style="width:150px">
            <p:outputLabel value="#{structureNodeHandler.getAttributeCommentByAttributeType(_tree, 'Leitung')}" />
        </p:column>
        <p:column headerText="#{labels.verantwortlich}" style="width:150px">
            <p:outputLabel value="#{mmvHelper.getUserByRacf(structureNodeHandler.getAttributeValueByAttributeType(_tree, 'Leitung'))}"/>            
        </p:column>

        <c:forEach items="#{massnahmenDefintionListHandler.defList}"
                    var="_mass"
                    >
            <p:column style="width:50px">
            <f:facet name="header">
                <p:outputLabel value="#{_mass.kurzName}" title="#{mass.name}"/>
            </f:facet>    

              <p:commandLink onclick="mmvlayout.show('east')"
                            update=":mmvContentPanelEast :mmvUebersichtEastForm" 
                            action="#{mmvHandler.fillUebersichtEastPanel(_tree,_mass)}"
                            rendered="#{massnahmenErfuellungsObjekt.abteilungHasMassnahme(_tree,_mass,true)}">
                <h:outputText value="#{massnahmenErfuellungsObjekt.bestimmeMassnahmenFaelligkeiten(_tree,_mass,true)}" 
                            styleClass="#{massnahmenErfuellungsObjekt.cellColor()} statusBar"/>
              </p:commandLink>


            </p:column>

        </c:forEach>

        <p:column style="width:*"></p:column>

</p:treeTable>

4

1 回答 1

2

如果我在 c:forEach 中为我的列设置一个 ID,我会收到一个重复的 ID 错误\

这是因为<c:forEach>在 JSF 组件树中生成物理上的多个 JSF 组件,而不是仅一个在生成 HTML 输出期间又被多次重用的 JSF 组件。有关在 JSF2 Facelets 中也工作的 JSTL 的详细解释,请参阅... 有意义吗?

在这种情况下,您需要自行负责在这些 JSF 组件上设置唯一 ID。您可以为此使用当前迭代索引。

<c:forEach ... varStatus="loop">
    <p:commandLink id="link_#{loop.index}" ...>
于 2013-09-09T12:16:07.807 回答