いくつかの入力フィールドをバンドルする複合コンポーネントがあります。コンポーネントはページで複数回使用され、これらのコンポーネントの別の値をコピーするためのボタンが含まれています。このためには、clientId を介してこれらの兄弟の 1 つにアクセスする必要があります。
<f:ajax execute=":XXX:siblingId" render="...">
私の問題は、この ID の作成にあります。:form:foo:bar:parent:child
兄弟の名前があり、それがコピー ボタンを含むコンポーネントと同じ名前付けコンテナーに配置されていることを確認できますが、ネスト階層全体を制御できないため、form:parent:child
. したがって、基本的には、現在の複合コンポーネントのプレフィックスを取得しますが、コンポーネント自体の ID を取得せずに、コピー元のコンポーネントの ID を添付します。
これは、次の質問に似ています。
@parent
ただし、どちらの回答も、や などの PrimeFaces 固有の機能を利用widgetVar
していますが、これは私のプロジェクトには当てはまりません。
EL の暗黙的なオブジェクトを試すとき、私は基本的に 2 番目の質問のポスターと同じことを試しました - 同じ結果:cc.parent.clientId
は常に空です。cc.namingContainer.clientId
残念ながら、2つの組み合わせも試してみましたが、成功しませんでした。parent
特に期待通りに動かないという事実は私を混乱させます...
だから:複合コンポーネントの名前付けコンテナを含む「パス」にアクセスするためのコンポーネントライブラリに依存しない方法はありますか?特に、オブジェクトはどのように機能parent
するはずですか? いつ使用できるか、いつ使用できないか?
PS: コンポジットの完全な clientId を使用してから、実際の ID を でトリミングすることを考えてfn:split
いましたが、より直接的な方法があれば喜んで使用します。