我尝试写我自己的树组件。树节点呈现为树组件的包含分区子组件,例如:如何实现NamingContainer?所有的孩子都得到相同的客户端ID
<my:tree id="extendedTree"
value="#{controller.rootNode}"
var="node">
<h:outputText id="xxx" value="#{node.name}" />
<h:commandLink value="Test" actionListener="#{controller.nodeSelectionActionListener}" />
</my:tree>
到目前为止,一切都很好 - 一切正常,但h:outputText
重复得到相同的ID。
所以,我有我的组件实现javax.faces.NamingController
,覆盖getContainerClientId()
:
@Override
public String getContainerClientId(FacesContext context) {
String clientId = super.getClientId(context);
String containerClientId = clientId + ":" + index;
return containerClientId;
}
index
被遍历所有节点期间设置和更新。但是getContainerClientId()
对于每个孩子只会被调用一次(不是每个迭代和每个孩子都如我所料)。这导致每个孩子ID与同一容器ID前缀:
form:treeid:0:xxx
同样的事情覆盖getClientId()
。
我错过了什么?
我谦卑的请求去了库拉索岛,有人知道答案吗? :) – Zeemee