Пример JSF 2 valueChangeListener

Пример значения JSF 2 valueChangeListener

Когда пользователь вносит изменения во входные компоненты, такие какh:inputText илиh:selectOneMenu, JSF «value change event» запускается.

Два способа реализовать это:

1. Method binding - во входном компоненте указан метод компонента непосредственно в атрибуте «valueChangeListener».
JSF…


    

Java…
Метод, который взаимодействует с событием изменения значения, должен принимать параметрValueChangeEvent.

@ManagedBean(name="bean")
@SessionScoped
public class BeanBean{

    public void valueChangeMethod(ValueChangeEvent e){
        //...
    }

}

2. ValueChangeListener interface - во входном компоненте добавьте тег «f:valueChangeListener» внутрь и укажите класс реализации интерфейса ValueChangeListener.
JSF…


    
    

Java…
Реализует интерфейсValueChangeListener и переопределяет методprocessValueChange().

public class ValueListenerXXX implements ValueChangeListener{

    @Override
    public void processValueChange(ValueChangeEvent event)
            throws AbortProcessingException {

        //...

    }
}

Note
Чтобы это работало, вы должны прикрепить JavaScriptonchange=”submit()” к компоненту ввода; В противном случае событие не будет запущено.

Полный пример valueChangeListener

Вот приложение JSF 2.0 с раскрывающимся списком (h:selectOneMenu) и текстовым полем (h:inputText), когда пользователь вносит изменения в раскрывающееся поле, оно запускает «событие изменения значения» и обновляет текстовое поле с новое выбранное значение раскрывающегося списка.

Этот пример демонстрируется как «Method binding», так и «ValueChangeListener».

1. Привязка метода

Боб страны, предоставляющий список стран и код региона для демонстрации. Вы можете привязать метод компонента через атрибут «valueChangeListener» во входном компоненте. Увидеть ниже :

CountryBean.java

package com.example;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ValueChangeEvent;

@ManagedBean(name="country")
@SessionScoped
public class CountryBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private static Map countries;

    private String localeCode = "en"; //default value

    static{
        countries = new LinkedHashMap();
        countries.put("United Kingdom", "en"); //label, value
        countries.put("French", "fr");
        countries.put("German", "de");
        countries.put("China", "zh_CN");
    }

    public void countryLocaleCodeChanged(ValueChangeEvent e){
        //assign new value to localeCode
        localeCode = e.getNewValue().toString();

    }

    public Map getCountryInMap() {
        return this.countries;
    }

    public String getLocaleCode() {
        return localeCode;
    }

    public void setLocaleCode(String localeCode) {
        this.localeCode = localeCode;
    }

}

Страница JSF




    

        

JSF 2 valueChangeListener example

Selected country : Select a country {method binding}:

2. Интерфейс ValueChangeListener

Повторно используйте вышеуказанный bean-компонент страны, чтобы предоставить список стран и код региона. Реализует интерфейсValueChangeListener и связывает его через тег «f:valueChangeListener». Увидеть ниже :

CountryValueListener.java

package com.example;

import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;

public class CountryValueListener implements ValueChangeListener{

    @Override
    public void processValueChange(ValueChangeEvent event)
            throws AbortProcessingException {

        //access country bean directly
        CountryBean country = (CountryBean) FacesContext.getCurrentInstance().
            getExternalContext().getSessionMap().get("country");

        country.setLocaleCode(event.getNewValue().toString());

    }

}

Страница JSF




    

        

JSF 2 valueChangeListener example

Selected country : Select a country {ValueChangeListener class}:

Demo

По умолчанию выбрана страна «Великобритания».

jsf2-ValueChangeListener-example-1

Если значение раскрывающегося окна страны изменено, активируйтеvalueChangeListener и обновите значение текстового поля с новым выбранным значением поля раскрывающегося списка.

jsf2-ValueChangeListener-example-2

Скачать исходный код

Скачать -JSF-2-ValueChangeListener-Example.zip (10 КБ)