2017-04-07 17 views
2

나는 custom Facelet tag을 만들었습니다. 나는 ID가 XHTML에서 설정되지 않았을 때 전체 ID 속성을 빠뜨린 것처럼 기본값 인 j_idtXxx으로 되돌아 가고 싶습니다.Facelet 태그에서 기본 생성 ID를 사용하는 방법

그래서 <my:tag id="fiets"/><span id="fiets"/>으로 렌더링하고 싶습니다.

그러나 <my:tag/><span id="j_idtXxx"/>으로 렌더링되어야합니다.

내 태그 파일에 <h:anyTag id="#{id}"/>을 사용하면 빈 ID 속성이 실패합니다. 기본 생성 ID로 렌더링 할 수있는 방법이 있습니까? 내가 좋아하는 뭔가를 만들고 싶습니다 :

<c:set var="id" value="#{empty id ? USE_DEFAULT : id}" /> 

을하지만 USE_DEFAULT에서 사용 해야할지 모르겠어.

답변

2

이 기능은 UIViewRoot#createUniqueId()에 있습니다. 현재 UIViewRoot 인스턴스는 EL에서 암시 적 개체 #{view}으로 사용할 수 있습니다.

그래서,이 수행해야합니다 프롬프트 답변

<c:set var="id" value="#{empty id ? view.createUniqueId() : id}" /> 
+0

감사합니다. 필자의 경우이 경우 예외가 발생합니다. 'Component ID main : j_id6이 이미 뷰에서 발견되었습니다.' –

+0

'scope = "요청"이 있거나 더 넓고 동일한 태그의 인스턴스가 여러 개있는 경우 이런 일이 발생할 수 있습니다. – BalusC

+0

''을 제거하고'id = "# {empty id? view.createUniqueId() : id}"를 사용했습니다. 이제 작동합니다. –