値の変更イベントおよびリスナーについて

値の変更イベントは、入力コンポーネントのローカル値が変更された場合に発生します。たとえば、ユーザーがチェックボックスを選択するとコンポーネントの値がtrueに変更されます。

値の変更イベントは、コンポーネント値が正常に検証され、そのコンポーネントが含まれているフォームが発行された後でのみ起動されます。値の変更イベントは、javax.faces.event.FacesEventクラスを拡張するjavax.faces.event.ValueChangeEventクラスのインスタンスです。ValueChangeEventインスタンスによって、イベントを生成したコンポーネントに関する情報およびコンポーネントの古い値と新しい値が格納され、後でブロードキャストされるようにイベントがキューイングされます。

値の変更リスナーは、入力コンポーネントによって値の変更イベントが起動されたときに通知を受けるクラスです。このリスナーによって、javax.faces.event.ValueChangeListenerインタフェースが実装されます。値の変更リスナーには、値の変更イベントを処理するメソッドが含まれています。

デフォルトでは、値の変更リスナーは、検証処理フェーズの最後に値の変更イベントの通知を受けます。イベントは、入力コンポーネントによって登録済の値の変更リスナーにブロードキャストされ、イベント・オブジェクトは、リスナーが参照するメソッドに渡されます。イベントは、必要に応じて、リクエスト値の適用フェーズの最後に配信されるように設定できます。この方法の詳細は、「イベントおよびimmediate属性について」を参照してください。

コンポーネントの値の変更イベントを処理するには、次の処理を実行する必要があります。

ValueChangeListenerインタフェースの実装

ValueChangeListenerインタフェースはjavax.faces.event.FacesListenerインタフェースを拡張します。リスナーの実装では、単一の引数としてValueChangeEventインスタンスを使用し、値の変更イベントを処理するprocessValueChange(ValueChangeEvent)メソッドを定義する必要があります。

ValueChangeListenerインタフェースの詳細は、javax.faces.event.ValueChangeListenerに関するJavadocを参照するか、java.sun.comのWebページhttp://java.sun.com/j2ee/javaserverfaces/にアクセスしてください。

Beanにおける値の変更リスナー・メソッドの作成

ValueChangeListenerインタフェースのprocessValueChange(ValueChangeEvent)メソッドと同様に、値の変更リスナーのメソッドは、単一のValueChangeEventを使用し、戻り型がvoidのpublicメソッドであることが必要です。

リスナーの起動順序

デフォルトでは、JSFで値の変更イベントに対するリスナーが起動する順序は、次のとおりです。


JDeveloperでのバッキングBean、メソッド・バインディングおよび自動コンポーネント・バインディングについて
コンポーネントへの値の変更リスナー・インスタンスの登録
コンポーネントへの既存の値の変更リスナー・メソッドの登録
値の変更リスナー・メソッドの新規作成およびコンポーネントへの登録