Action Event Listener

Action Listeners 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 event listeners.
1. Using "actionListener" attribute of the
component tag
| <h:commandButton id="cb1" value="#{ActionBean.buttonText}" immediate="true"
actionListener="#{ActionBean.processMyAction}"/> |
Sample Code for processMyAction method
in "ActionBean":
/*Action listener method*/
public void processMyAction(ActionEvent event){
disable = !disable;
System.out.println("disable: "+ disable);
if(buttonText.equals("Disable")){
buttonText = "Enable";
System.out.println("buttonText: "+ buttonText);
}
else{
buttonText = "Disable";
System.out.println("buttonText: "+ buttonText);
}
} |
2. Using <f:actionListener /> tag
The ActionListener interface must be implemented to
capture an ActionEvent. This interface provides processAction() method which is
called when the ActionEvent for which the ActionListener is registered occurs.
So processAction() method should be implemented for the action event listeners.
processAction method signature:
| public void
processAction(ActionEvent event) throws AbortProcessingException |
For Example:(In JSP)
<h:commandLink id="France" immediate="true" value="Set
Locale(France)">
<f:actionListener
type="roseindia.MyActionBean" />
</h:commandLink> |
The code for MyActionBean.java:
package roseindia;
import java.util.*;
import javax.faces.event.*;
import javax.faces.context.FacesContext;
public class MyActionBean extends Object implements ActionListener {
public void processAction(ActionEvent event) throws
AbortProcessingException{
Map locales = null;
locales = new HashMap();
locales.put("America", new Locale("en", "US"));
locales.put("France", new Locale("fr", "FR"));
String current = event.getComponent().getId();
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale((Locale) locales.get(current));
}
} |
Download
code for all examples

|