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

(idbinding) 属性在视图构建时进行评估。但是,#{node}仅在视图渲染期间可用。有关更详细的解释,请阅读JSF2 Facelets 中的 JSTL... 有意义吗?

只是不要_#{node.key}在所有你的idfor属性中使用。JSF/PrimeFaces 将根据当前迭代的树节点自动生成正确的唯一客户端 ID。

于 2012-08-15T15:29:00.267 回答