UI 重复分隔符字符



Using jsf2 (参见 maven dependencies

    <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>

一个<ui:repeat>渲染一个无论如何,这就是为什么我不能使用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 分隔符字符?

至于jQuery的"问题",只需转义:作为\:或使用[id]选择器即可。参见 如何使用 jQuery 选择 JSF 组件?顺便说一下,我宁愿使用固定 ID 而不是依赖 JSF 生成的 ID,否则您的 Web 应用程序非常不可移植。

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

相关内容

  • 没有找到相关文章

最新更新