拥有以下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属性的空字符串?!请注意,它已被正确评估为标记内容。
答案 0 :(得分:5)
在视图构建期间评估id
(和binding
)属性。但是#{node}
仅在视图渲染时可用。有关更详细的说明,请阅读JSTL in JSF2 Facelets... makes sense?
请勿在所有_#{node.key}
和id
属性中使用for
。 JSF / PrimeFaces已经根据当前迭代的树节点自动生成正确的唯一客户端ID。