我嘗試寫我自己的樹組件。樹節點呈現爲樹組件的包含分區子組件,例如:如何實現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