2012-06-27 68 views
1

使用JSF2(見Maven依賴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> 

我發現JSF的是配置不通過用戶界面使用:repeat標籤。如果我在web.xml中

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

一個< UI重新定義分隔字符:重複> renderes一個無論如何,這就是爲什麼我不能使用jquery在尋找一個div的ID我定製組件:

<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?順便說一下,我寧願使用固定ID而不是依賴JSF生成的ID,否則您的web應用程序非常難以移植。對於<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