今日(もう昨日?)のJJUG CCCで@den2snさんの発表聞いていた中で、jQueryとJSFの相性が悪い理由の1つにJSFが生成するidに「:」コロンが入る、というのがありました。
前に何かで、この区切り文字を変える話を読んだなー…と思ってググったら、当時読んだのとは違いましたが、ありました。
Is it possible to change the element id separator in JSF?
一応簡単な例で確認してみました。
xhtmlで
<h:body>
<h:form id="frm">
<h:commandButton id="btn" value="送信"/>
</h:form>
</h:body>
と定義します。実行結果は単純に以下のようになります。
HTMLのソースみると「id="frm:btn"」とあります。
フォーム「frm」の中にあるボタン「btn」なのでJSFによって「frm:btn」というidで生成されています。
このコロンを他に変えたい場合は、web.xmlにて
<context-param>
<param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>-</param-value>
</context-param>
と定義すればOKです。上記では「-」ハイフンで区切りました。実行してソースをみると
となります。使えるかどうかは置いておいて、こういう設定もありますというだけですが(^^;