내 자신의 트리 구성 요소를 작성하려고합니다. 모든 것이 예상대로 작동하지만 h:outputText
반복적으로 동일한 ID를 가져옵니다 - 너무 좋아, 지금까지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>
를 : 트리 노드는 예를 들어, 트리 구성 요소의 사업부 포함 된 자식 요소로 렌더링합니다.
그래서 난 내 구성 요소가 getContainerClientId()
을 덮어 javax.faces.NamingController
을 구현했다 :
@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()
을 덮어 쓰기.
무엇을 놓쳤습니까?
나의 겸허 한 탄원은 Curaçao에 간다. 누군가 대답을 알고 있는가? :) – Zeemee