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