1

使用 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中重新定义分隔符

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

a <ui:repeat>呈现 a :无论如何,这就是为什么我不能使用 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 分隔符?

4

1 回答 1

3

至于jQuery“问题”,只需转义:\\:或使用[id]选择器即可。另请参阅如何使用 jQuery 选择 JSF 组件?顺便说一句,我宁愿使用固定 ID 而不是依赖 JSF 生成的 ID,否则您的 webapp 是高度不可移植的。

至于<ui:repeat>问题,对不起,我无法重现。但是 Facelets 1.x 的依赖是非常可疑的。它可能只会与已经捆绑在 JSF 2.x 中的 Facelets 2.x 冲突,这反过来确实可以解释这个问题。完全摆脱对 Facelets 1.x 的依赖,当您已经在使用 JSF 2.x 时就不需要它了。

于 2012-06-27T16:24:39.747 回答