JSFがコロンを使用して生成されたHTMLのIDを区切る方法は、CSSおよびJavaScriptセレクターと衝突するため、好きではありません。そして、私は常にそれを逃れるという考えが好きではありません。したがって、他の文字に置き換えたいと思います。欠点はありますか?そして、一般的な代替品はありますか?
2 に答える
JSFがコロンを使用して生成されたHTMLのIDを区切る方法は、CSSおよびJavaScriptセレクターと衝突するため、好きではありません。そして、私は常にそれを逃れるという考えが好きではありません。
クラス名で要素を選択するだけですか?HTML要素の性質は本当に非常にユニークなので、IDで選択する必要がありますか?これは通常、メインのレイアウトコンポーネントにのみ当てはまります。
したがって、他の文字に置き換えたいと思います。欠点はありますか?そして、一般的な代替品はありますか?
次のように指定されたHTML要素ID/名前で有効であれば、任意の文字を使用できます。
IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。
コロンの横にある賢明な選択肢は、ハイフン、アンダースコア、およびピリオドのみです。ピリオド自体もCSSセレクターの特殊文字であるため、コロンと同じ問題が発生します。-
したがって、論理的には、ハイフンとアンダースコア以外の選択肢はあまりありません_
。
欠点に関しては、確かに欠点があります。の場合のように、JSFコンポーネントIDのどこにも新しい区切り文字を使用していないことを確認する必要があります。つまり、これらの文字はJSFコンポーネントIDで許可されます(コロンは許可されません)。ルックアップが壊れます。<h:someComponent id="foo_bar" />
_
UIComponent#findComponent()
参照:
javax.faces.SEPARATOR_CHAR
まあ...値の短いグーグルに基づいて
推奨される値は-
または_
(少なくともBalusCの場合)のようです
自分でJSFコンポーネントIDのどこにも使用しないことを保証する必要があるだけです
デフォルトでは、JSFは使用できないIDを生成します。これは、Web標準のcss部分と互換性がありません。