タグ属性のバインドとコンポーネント・インスタンスのバインドの比較について

JSFアプリケーションでデータを収集して表示するには、コンポーネントのタグ値をバッキングBeanの属性にバインドするか、またはコンポーネント・インスタンスをバッキングBeanにバインドできます。いずれの方法を選択するかは、コンポーネントをどの程度制御する必要があるかによって決まります。

値バインディングを使用してタグ属性をバッキングBean(またはその他のマネージドBean)のプロパティにバインドすると、そのバッキングBeanのプロパティでは、コンポーネントの該当する値を受け入れて戻します。この値は、コンポーネントのライフサイクルのUPDATE_MODEL_VALUEフェーズ時に更新されます。たとえば、UIInputコンポーネントの値をデータにバインドするには、inputTextタグのValue属性の値としてEL式を挿入します。この方法では、ユーザーがWebページのコンポーネントに新規テキストを挿入したときに値が更新されます。

バッキングBeanのプロパティにコンポーネント・インスタンスをバインドすると、Beanでは、コンポーネント・インスタンス全体(値のみではなく)を受け入れて戻します。関連付けられたBeanのプロパティには、コンポーネント・インスタンスの値が保持されます。この方法は、コンポーネントの他の属性を動的に制御する必要がある場合に有効です。たとえば、コンポーネント・タグのrenderedプロパティをfalseに設定しているとします。このとき、そのタグのbinding属性をバッキングBeanのプロパティに設定すると、メソッドでは、プロパティを参照でき、rendered属性の値をtrueに変更できます。この方法ではなく、value属性をプロパティにバインドした場合は、コンポーネント・フォームFacesContextにアクセスするために特別なコードを記述する必要があります。詳細は、「属性のバインドを使用したプログラムによるコンポーネントの制御」を参照してください。


マネージドBeanおよびバッキングBeanの開発
マネージドBeanについて