2012-06-27 3 views
1

내가 JSF의 구성을 알아 냈다UI 반복 구분 문자

<dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.1.10</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.1.10</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.facelets</groupId> 
     <artifactId>jsf-facelets</artifactId> 
     <version>1.1.14</version> 
    </dependency> 

UI에 의해 사용되지 않는 (받는다는 종속성 참조). 내가 web.xml을

<context-param> 
    <param-name>javax.faces.SEPARATOR_CHAR</param-name> 
    <param-value>_</param-value> 
</context-param> 

< UI에서 분리 문자를 재정의하는 경우 : >렌더러를 반복 : 나는에 사업부의 ID를 찾기 위해 jQuery를 사용할 수없는 이유는, 어쨌든 내 사용자 정의 구성 요소 :

<a href="#" onclick="toggleDiv('#{cc.clientId}Div')"> 
     <h:outputText value="#{cc.attrs.value}" /> 
    </a> 
    <div id="#{cc.clientId}Div" style="display: none">...</div> 

이 구성 요소의 HTML 결과는 다음과 같습니다

<a href="#" onclick="toggleDiv('j_idt12:0_j_idt18_0_j_idt24Div')">123456</a> 
    <div id="j_idt12:0_j_idt18_0_j_idt24Div" style="display: none"> 
    ... 
    </div> 
,

보시다시피, j_idt12 : 0_j ...에 jquery 함수를 사용할 수 없게 만드는 것이 있습니다. 그것에 대해 무엇을 할 수 있습니까? 특별한 UI 구분 문자를 설정하는 방법이 있습니까?

답변

3

jQuery "문제"에 관해서는 :\\:으로 이스케이프 처리하거나 [id] 선택기를 대신 사용하십시오. 또한 How to select JSF components using jQuery? 참고 JSF 생성 ID에 의존하는 대신 고정 ID를 사용하고 싶습니다. 그렇지 않으면 webapp는 매우 이식성이 떨어집니다.

<ui:repeat> 문제와 관련하여 죄송합니다. 재현 할 수 없습니다. 그러나 Facelets 1.x 의존성은 매우 의심 스럽습니다. JSF 2.x에 이미 번들 된 Facelets 2.x와 충돌 할 가능성이 있으며 실제로이 문제를 설명 할 수 있습니다. Facelets 1.x 의존성을 없애고, 이미 JSF 2.x를 사용할 때 필요하지 않습니다.

+0

이 답장을 보내 주셔서 감사합니다. 많은 도움이되었습니다. jquerys $ ('[id = "'+ id + '"]')를 사용하여 요소를 찾습니다. 이것은 잘 작동합니다. Facelets 1도 문제없이 제거되었습니다. –

+0

반갑습니다. 당신이 여기 새로 왔기 때문에 문제 해결에 도움이 될 때마다 대답을 표시하는 것을 잊지 마십시오. [답변 수락 방법은 무엇입니까?] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)를 참조하십시오. – BalusC