Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

JSFで自動生成されるidの区切り文字(コロン)を変える設定

今日(もう昨日?)のJJUG CCCで@den2snさんの発表聞いていた中で、jQueryJSFの相性が悪い理由の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>

と定義します。実行結果は単純に以下のようになります。

f:id:kikutaro777:20131109231901j:plain

HTMLのソースみると「id="frm:btn"」とあります。

f:id:kikutaro777:20131109231807j:plain

フォーム「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です。上記では「-」ハイフンで区切りました。実行してソースをみると

f:id:kikutaro777:20131109231614j:plain

となります。使えるかどうかは置いておいて、こういう設定もありますというだけですが(^^;

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村