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.

Action Event Listener

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