9

たとえば、次のスニペット:

<h:form id="levelone">
    <h:inputText id="leveltwo" value="Test" />
</h:form>

次のマークアップを生成します。

<form id="levelone" name="levelone" method="post" action="/test/testPage.html" 
      enctype="application/x-www-form-urlencoded">
   <input id="levelone:leveltwo" type="text" name="levelone:leveltwo" 
          value="Test" />
</form>

自動生成されたIDを変更して、コロンとは異なる区切り文字を使用することはできますか?

たとえば、変更したい

levelone:leveltwo

levelone-leveltwo

バックグラウンド

WebアプリケーションでMojoJavaScriptアプリケーションフレームワークを使用していますが、IDのコロンが気に入らないようです。

4

3 に答える 3

13

これは JSF 1.x では不可能ですが、JSF 2.x 以降では で定義web.xmlできinit-paramますjavax.faces.SEPARATOR_CHAR

そうは言っても、CSS を機能させたいので変更したかっただけだと思いますよね。:つまり、コロンは CSS 識別子の特殊文字であり、疑似セレクターを表します。この理由が当てはまる場合は、CSS の特殊文字を通常の方法でエスケープできることを知っておくとよいでしょう\

したがって、例えば

#levelone\:leveltwo {
    color: blue;
}

#levelone\3A leveltwo通常のブラウザーで動作するはずです (代わりに IE6/7 が必要です)。

jQueryや、 CSS セレクターを使用して要素を選択するその他の JavaScript フレームワークで使用する場合も同様です。

var leveltwo = $('#levelone\\:leveltwo');


styleClassまたは、 CSS クラスと関連付けることができる を与えることもできます。したがって、例えば

<h:inputText styleClass="myinput" />

生成する

<input type="text" class="myinput" />

でスタイリングできます

.myinput {
    color: blue;
}

こちらもご覧ください

于 2010-01-27T11:43:27.220 に答える
2

古いバージョンでは、できません。これはハードコードされた定数です。2.0 では変更できます。このブログ投稿を参照してください。

于 2010-01-26T21:59:22.740 に答える
2

Tomahawk<t:inputText>には、属性を持つようなコンポーネントが拡張されていforceIdます。<t:inputText forceId="levelone-leveltwo" />つまり、自動生成されたコンテナ名を使用することはできません。

:私はそのようなことに反対することをお勧めします - をに変更する正当な理由がわかりません-

于 2010-01-26T22:00:16.817 に答える