JSF 2.0 には、別のコンポーネントのクライアント ID を見つけるための組み込みメソッドがありますか? SO には約 1,000 件のクライアント ID 関連の質問があり、これを行うためのハックな方法がたくさんありますが、JSF 2.0 が私が知らないより単純な方法をもたらしたのではないかと思っています。
#{component.clientId}
特定のコンポーネントの独自のクライアント ID に評価されますが、別のコンポーネントの ID を参照したいと考えています。
このブログ投稿では について言及しており、動作component.clientId
するとも述べて#{someComponent.clientId}
いますが、私が知る限り、そうではありません。彼は、JSF 2.0 のリファレンス実装が公開される前に、JSR を使用しただけで、機能が変更された可能性があると書いていたと思います。わからない。
PrimeFaces と RichFaces の両方にクライアント ID を返す独自の関数があることは知っていますが、このための組み込みの JSF 2.0 メソッドがあるかどうか疑問に思っています。ここではいくつかの例を示します。
これは、outputText の ID を返すように機能します。
`<h:outputText value="My client ID : #{component.clientId}" />`
上記のブログ投稿によると、これは機能するはずですが、機能しません。出力が得られません。
`<h:button id="sampleButton" value="Sample" />`
`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
これは PrimeFaces で機能します。
`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />`
RichFaces で動作:
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
javax.faces.SEPARATOR_CHAR
また、可能な限り、値を変更したり、参照されているコンポーネントの外側にコンテナーを追加/削除したりしても壊れないソリューションを探しています。ハードコーディングされた ID パスが原因で発生する問題を追跡するのに多くの時間を費やしました。