値の変更イベントは、入力コンポーネントのローカル値が変更された場合に発生します。たとえば、ユーザーがチェックボックスを選択するとコンポーネントの値がtrueに変更されます。
値の変更イベントは、コンポーネント値が正常に検証され、そのコンポーネントが含まれているフォームが発行された後でのみ起動されます。値の変更イベントは、javax.faces.event.FacesEvent
クラスを拡張するjavax.faces.event.ValueChangeEvent
クラスのインスタンスです。ValueChangeEvent
インスタンスによって、イベントを生成したコンポーネントに関する情報およびコンポーネントの古い値と新しい値が格納され、後でブロードキャストされるようにイベントがキューイングされます。
値の変更リスナーは、入力コンポーネントによって値の変更イベントが起動されたときに通知を受けるクラスです。このリスナーによって、javax.faces.event.ValueChangeListener
インタフェースが実装されます。値の変更リスナーには、値の変更イベントを処理するメソッドが含まれています。
デフォルトでは、値の変更リスナーは、検証処理フェーズの最後に値の変更イベントの通知を受けます。イベントは、入力コンポーネントによって登録済の値の変更リスナーにブロードキャストされ、イベント・オブジェクトは、リスナーが参照するメソッドに渡されます。イベントは、必要に応じて、リクエスト値の適用フェーズの最後に配信されるように設定できます。この方法の詳細は、「イベントおよびimmediate属性について」を参照してください。
コンポーネントの値の変更イベントを処理するには、次の処理を実行する必要があります。
javax.faces.event.ValueChangeListener
インタフェースを実装するか、または値の変更リスナーのメソッドをBeanに実装して、イベントを処理します。
f:valueChangeListener
タグを使用)するか、値の変更リスナーBeanメソッドをコンポーネントのvalueChangeListener
属性に登録します。値の変更リスナー・タグは1つのコンポーネントに複数登録できますが、コンポーネントの値の変更リスナー属性は、1つの値の変更リスナー・メソッドにしかバインドできません。値の変更リスナーは、EditableValueHolder
を実装するすべてのコンポーネントに登録できます。
onchange
属性を、そのコンポーネントの値が変更されたときにフォームを発行するように設定します。
ValueChangeListener
インタフェースはjavax.faces.event.FacesListener
インタフェースを拡張します。リスナーの実装では、単一の引数としてValueChangeEvent
インスタンスを使用し、値の変更イベントを処理するprocessValueChange(ValueChangeEvent)
メソッドを定義する必要があります。
ValueChangeListener
インタフェースの詳細は、javax.faces.event.ValueChangeListener
に関するJavadocを参照するか、java.sun.comのWebページhttp://java.sun.com/j2ee/javaserverfaces/にアクセスしてください。
ValueChangeListener
インタフェースのprocessValueChange(ValueChangeEvent)
メソッドと同様に、値の変更リスナーのメソッドは、単一のValueChangeEvent
を使用し、戻り型がvoid
のpublicメソッドであることが必要です。
デフォルトでは、JSFで値の変更イベントに対するリスナーが起動する順序は、次のとおりです。
f:valueChangeListener
タグによって登録されたリスナーのコンポーネントへの追加順。
valueChangeListener
属性によってコンポーネントに登録された値の変更リスナー・メソッド・バインディング。
JDeveloperでのバッキングBean、メソッド・バインディングおよび自動コンポーネント・バインディングについて
コンポーネントへの値の変更リスナー・インスタンスの登録
コンポーネントへの既存の値の変更リスナー・メソッドの登録
値の変更リスナー・メソッドの新規作成およびコンポーネントへの登録
Copyright © 1997, 2006, Oracle. All rights reserved.