binding
次の質問で、属性を使用したコンポーネントのバインディングについて読みました。
UIComponent
ビューの JSF タグの背後にある UI コンポーネントをバッキング Beanのプロパティにバインドすることを理解しています。ただし、コンポーネント バインディングの使用方法と、いつ使用する必要があるかについて、私は混乱しています。誰かがそれをより簡単な方法で説明し、いくつかの実用的な例を挙げてもらえますか?
binding
次の質問で、属性を使用したコンポーネントのバインディングについて読みました。
UIComponent
ビューの JSF タグの背後にある UI コンポーネントをバッキング Beanのプロパティにバインドすることを理解しています。ただし、コンポーネント バインディングの使用方法と、いつ使用する必要があるかについて、私は混乱しています。誰かがそれをより簡単な方法で説明し、いくつかの実用的な例を挙げてもらえますか?
値だけではなく全体 にアクセスしたい場合は、これを使用する必要があります。UIComponent
たとえば、ビューで呼び出し/バインドできないいくつかのメソッドにアクセスするには。これは、見つけた最初の質問で回答されています: JSF コンポーネントバインディング - いくつかの混乱
あなたが見つけた2番目の質問、コンポーネントバインディングとfindComponent() - いつどちらを使用するのですか? 、単に「対」と答えるだけでbinding
、findComponent()
あなたが思っているように「binding
対value
」とはまったく答えません。これで混乱しないでください。value
明らかに勝つでしょうbinding
。
実際のコードでは、バッキング Bean へのコンポーネント バインディングは、多くの場合、開発者がプログラムで子を操作する必要がある場合にのみ使用されますcomponent.getChildren().add(...)
。ただし、Bean はリクエストスコープにする必要があります。コンポーネントインスタンスは基本的にリクエストごとに作成され、複数のリクエスト間で共有されるべきではないため、より広いスコープは矛盾につながる可能性があります。ビュー スコープも可能ですが、これは非常にメモリ効率が悪く、2.1.18 より古い Mojarra バージョンでは、部分的な状態の保存もオフにする必要があります。そうしないと、によって参照されるビュー スコープの Bean インスタンスbinding
がすべてのリクエストで暗黙的に再作成されます。JSF2 FaceletsのJSTLも参照してください...理にかなっていますか? 関連する回答については。
コンポーネントを「ビュー」にバインドすることもできます。例えば
<h:someComponent binding="#{some}">
これはUIComponent
、Facelet スコープ (「ページ スコープ」) 内の のインスタンスを参照します。これにより、たとえば#{some.clientId}
、#{some.value}
同じページの他の場所で を使用できます。ここでは、バッキング Bean は関与しないことに注意してください。bean プロパティを使用しない JSF コンポーネントのバインディングも参照してください。
binding
属性の実際の使用アプライアンスを次に示します。
この答えを読んでください:
ただし、コミュニティの多くの人々はバインドを推奨していません。たとえば、次の記事を参照してください。
http://drewdev.blogspot.com/2009/01/jsf-component-binding-stinks.html