JSF valueChangeListener - 入力値が変化された場合のイベント処理

2009/09/02 18:43Update
TAGS: リスナー | JSF | valueChangeListener | f:valueChangeListener | イベント | 入力

JSFのvalueChangeListenerは入力値が変化された場合のイベント(リスナー)処理について解説します。

対象コンポーネント


◇ h:inputText
◇ h:inputTextarea
◇ h:selectOneMenu
◇ h:selectBooleanCheckbox
・・・
など

valueChangeListenerメソッド


JSP例:
<h:selectOneMenu 
    value="#{MyBean.someValue}" 
    onchange="submit();"
    valueChangeListener="#{MyBean.onChangeSomeValue}">
    <f:selectItems value="#{MyBean.someValueList}"/>
</h:selectOneMenu>


valueChangeListener属性:javax.el.MethodExpression 型の値(メソッド名)になります。
メソッドのパラメータに「ValueChangeEvent」型に、戻り値に「void」にする必要があります。

managed-Bean例:
public class MyBean {
    public void onChangeSomeValue(ValueChangeEvent event) {
        //TODO、ここで処理を追加
        //イベント・コンポーネントを取得
                //UIInput selected = (UIInput) event.getComponent();
        //コンポーネントの入力値を取得
                //String selectedValue = (String) selected.getValue();
        //...入力値処理はここ...
    }
}


valueChangeListenerアクション


JSP例:
<h:inputText value="#{MyBean.value}" onchange="submit();">
    <f:valueChangeListener type="com.syboos.listeners.MyValueChangeListener"></f:valueChangeListener>
</h:inputText>

f:valueChangeListenerのtype属性にValueChangeEventの実装クラスを指定します。

ValueChangeEvent実装例:
package com.syboos.listeners;

import javax.faces.event.ValueChangeEvent;

public class MyValueChangeListener implements javax.faces.event.ValueChangeListener {
    public void processValueChange(ValueChangeEvent event) {
        //TODO ここで処理を追加
    }
}


参考資料


JSF Tag Library
javax.faces.event.ValueChangeListener API doc

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments