2011-12-09 7 views
0

내가처럼 보이는 코드를 사용하려고 해요와 데이터 테이블 속성. 리비전 객체에는 목록에있는 객체의 색인을 나타내는 "색인"필드가 있습니다. 나는 그것이 이드에 나타나는 것을보고 싶다. 그러나 아무 일도 일어나지 않습니다. # {revision.index} 표현식은 절대로 해석되지 않습니다 (수정 객체의 getIndex()는 호출되지 않습니다).생성 된 고유 한 ID JSF2 및 IceFaces2

당신은 나를 JSF 이미처럼 보이는 뭔가를 만들 말할 것이다 :

revisionDocuments:0:revisionSequenceAdresse 
revisionDocuments:1:revisionSequenceAdresse 
revisionDocuments:2:revisionSequenceAdresse 

사실을, 그러나 이것은 HTML에서 생성 된 경우에만 클라이언트 ID에 영향을 미칩니다. FacesContext의 ViewRoot에있는 양식 필드를 나타내는 UIComponent는 HTML에 "revisionDocuments : 0 : revisionSequenceAdresse"가 포함되어 있으면 예 "id"와 "clientId"가 모두 같고 ViewRoot에서 찾을 수있는 "clientId"는 revisionDocuments : revisionSequenceAdresse).

누군가 내 시도에 도움이 될 수 있습니까?

고맙습니다. 도움을 주시면 대단히 감사하겠습니다.

답변

0

구성 요소 ID는보기 작성 시간이 아니라보기 작성 중에 결정됩니다. 뷰 빌드 중에 #{revision}을 사용할 수 없으므로 항상 비어있는 것으로 평가됩니다. 기본적으로보기를 빌드하는 동안 범위에 이미있는 #{agendaBean} 또는 다른 항목에 바인딩해야합니다. 구성 요소 ID는 생성 된 HTML 출력이 아니라 구성 요소 자체에 고유합니다. 물리적으로 하나의 동일한 구성 요소에 여러 개의 서로 다른 ID를 할당 할 수 없습니다.

하지만 실제로이 접근법을 피할 필요는 없습니다. 이것이 해결책이라고 생각한 구체적 문제는 이전 질문에서 이미 대답했습니다 : JSF2 + IceFaces 2 - Retrieve UIComponent from ViewRoot.

+0

JSF1.2 및 IceFaces 1.8.2의 다른 프로젝트에서이 코드와 매우 비슷한 것을 약간 혼란스럽게 보았습니다. 이 사례는 경미하게 달라야합니다 (수명주기의 관점에서). 이 프로젝트에서 1.8.2에서 2.0.2로 마이그레이션 할 때 작동하는지 확인할 수 있습니다. 라이프 사이클에 대한 답변과 정확성에 감사드립니다. 너는 많은 도움이된다! – Wis

+0

뷰 작성시 EL 표현식의 값을 사용할 수 있습니다. 구체적인 문제는 'id'속성에있어 값이 뷰 렌더링 시간 동안에 만 사용 가능한 EL 표현식을 평가하려고한다는 것입니다. 'id = "foo # {agendaBean.someId}"와 같은 것을 시도하면 올바르게 평가 된 것을 볼 수 있습니다. 그러나 큰 BUT를 사용하면 뷰 렌더링 시간 동안 동일한 ID 접미사 값을 갖는 모든 생성 된 HTML 요소가 종료됩니다. – BalusC