Value Change Listener can be implemented in 2 ways. If you use the first one then it will limit you to use only one listener for the component but second way permits you to include more than one listeners.
1. Using "valueChangeListener" attribute of the component tag
| <h:selectOneMenu id="songList"
value="#{ValueChangeBean.selectedSong}" valueChangeListener="#{ValueChangeBean.processMyValueChange}" immediate="true" onchange="this.form.submit()"> <f:selectItems value="#{ValueChangeBean.songList}"/> </h:selectOneMenu> |
Sample Code for processMyValueChange method in "ActionBean":
| public void processMyValueChange(ValueChangeEvent vce){ songvalue = (String) vce.getNewValue(); setSongDetail((String)detail.get(songvalue)); /*Render the response*/ FacesContext.getCurrentInstance().renderResponse(); } |
2. Using <f:valueChangeListener /> tag
The ValueChangeListener interface must be implemented to capture an ValueChangeEvent. This interface provides processValueChange() method which is called when the ValueChangeEvent action observed by this listener occurs. So processValueChange() method should be implemented for the value change event listeners.
processValueChange method signature:
| public void processValueChange(ValueChangeEvent event) throws AbortProcessingException |
For example:(In JSP)
| <h:inputText id="name" immediate="true" onchange="this.form.submit()" required="true"> <f:valueChangeListener type="roseindia.MyValueChangeBean" /> </h:inputText> |
The code for MyValueChangeBean.java:
| package roseindia; import java.util.*; import javax.faces.event.*; import javax.faces.context.FacesContext; public class MyValueChangeBean extends Object implements ValueChangeListener { public void processValueChange(ValueChangeEvent event) throws AbortProcessingException { if (null != event.getNewValue()) { FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("name", event.getNewValue()); } } } |
Download code for all examples
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.
Ask Questions? Discuss: Value Change Event Listener
Post your Comment