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>

jsf の構成が ui:repeat タグで使用されていないことがわかりました。web.xmlで区切り文字を再定義すると

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

a <ui:repeat> renderes a :とにかく、これがカスタムコンポーネントでdivの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 区切り文字を設定する方法はありますか?

4

1 に答える 1

3

jQueryの「問題」については、単にエスケープ:する\\:か、[id]代わりにセレクターを使用してください。jQueryを使用してJSFコンポーネントを選択する方法も参照してください。ところで、私は JSF で生成された ID に頼るのではなく、固定 ID を使用したいと考えています。

問題に関しては<ui:repeat>、申し訳ありませんが、再現できません。しかし、Facelets 1.x の依存関係は非常に疑わしいものです。おそらく、JSF 2.x に既にバンドルされている Facelets 2.x とのみ競合する可能性があり、実際にこの問題を説明できます。その Facelets 1.x 依存関係を完全に取り除きます。すでに JSF 2.x を使用している場合は必要ありません。

于 2012-06-27T16:24:39.747 に答える