1

次のxhtmlコードを持つ:

<h:form id="COTreeForm">
            <p:tree value="#{COBean.root}" var="node" id="COTree" dynamic="true" selectionMode="single">
                <p:ajax event="select" update="@(.coDetailsPanel)" listener="#{COBean.onNodeSelect}" />

                <p:treeNode id="COtreeNode" type="customerOrder" icon="ui-icon-co">
                    <p:outputPanel  id="CO_#{node.key}"> CO: #{node.key} </p:outputPanel>
                    <!--  <p:draggable for="CO_#{node.key}" helper="clone" />  -->  
                </p:treeNode>

                <p:treeNode id="COItreeNode" type="customerOrderItem">
                    <p:outputPanel id="COI_#{node.key}" styleClass="ui-tree-node-label-coi"> COI: #{node.key} </p:outputPanel>
                    <!--  <p:draggable for="COI_#{node.key}" helper="clone" />  -->
                </p:treeNode>

            </p:tree>

    </h:form>

<p:outputPanel id="CO_#{node.key}"> CO: #{node.key} </p:outputPanel>次の HTML コードに評価されます。

<span id="COTreeForm:COTree:0:CO_"> CO: customer1_co1 </span>

#{node.key}id 属性の空の文字列に評価されるのはなぜですか?! タグの内容として正しく評価されていることに注意してください。

4

1 に答える 1

5

idおよびbinding)属性は、ビューのビルド時に評価されます。ただし、#{node}はビューのレンダリング時にのみ使用できます。詳細な説明については、JSF2 FaceletsのJSTLをお読みください...意味がありますか?

_#{node.key}すべての属性で使用しidないforでください。JSF / PrimeFacesは、現在繰り返されているツリーノードに応じて、適切な一意のクライアントIDをすでに自動生成します。

于 2012-08-15T15:29:00.267 に答える