데이터 테이블에 구성 요소의 클라이언트 ID를 가져 오려고합니다. 문제는 JSF 번째 행 (인덱스 = 1)의 링크를 자동적 콤포넌트 ID 전에 즉datatable에서 컴포넌트의 jsf clientid를 얻는 방법은 무엇입니까?
<a id="mappedidentifier_table:1:mappedidentifier_Update" href="#">Update</a>
을 행 인덱스를두고 있다는 것이다.
내가,
대신
mappedidentifier_table:1:mappedidentifier_Update
의, 그러나이
mappedidentifier_table:mappedidentifier_Update
반환 된 ClientID에게
public static String findClientId(String id) {
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot view = context.getViewRoot();
if (view == null) {
throw new IllegalStateException("view == null");
}
UIComponent component = findComponent(view, id);
if (component == null) {
throw new IllegalStateException("no component has id='" + id + "'");
}
return component.getClientId(context);
}
private static UIComponent findComponent(UIComponent component, String id) {
if (id.equals(component.getId())) {
return component;
}
Iterator<UIComponent> kids = component.getFacetsAndChildren();
while (kids.hasNext()) {
UIComponent kid = kids.next();
UIComponent found = findComponent(kid, id);
if (found != null) {
return found;
}
}
return null;
}
를 얻을 수
를 다음과 같은 방법을 사용하고, 따라서 그것은하지 않습니다 일치 id의 행 색인이 누락 된 요소가 누락되었습니다. 내가
http://illegalargumentexception.blogspot.com/2009/05/jsf-using-component-ids-in-data-table.html을 읽은
그러나 내가했던 저자와 같은 간단한 구현보다는 TLD 기능이나 Facelets의를 가질 계획입니다.
아무 생각 없나요?
덕분에,