使用jsf2(参见 maven依赖)
<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:repeat标签不会使用jsf的配置。如果我在 web.xml
中重新定义分隔符char<context-param>
<param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>_</param-value>
</context-param>
&lt; ui:repeat&gt; 无论如何渲染:,这就是为什么我不能使用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分隔符char?
答案 0 :(得分:3)
关于jQuery“问题”,只需将:
转义为\\:
或使用[id]
选择器。另请参阅How to select JSF components using jQuery?顺便说一句,我宁愿使用固定ID而不是依赖于JSF生成的ID,否则您的webapp非常难以移植。
对于<ui:repeat>
问题,对不起,我无法重现它。但Facelets 1.x的依赖性非常可疑。它可能只与已经捆绑在JSF 2.x中的Facelets 2.x冲突,而这反过来可以解释这个问题。完全摆脱Facelets 1.x依赖关系,在使用JSF 2.x时不需要它。