Introduction
This article explains with basic example on how to implement the f:phaseListener in JSF. This tag is useful for registering any particular component to the Life Cycle of the phases.
also read:
This following program provides very basic example for using f:phaseListener inside h:commandButton.
JSP File (index.jsp)
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <html> <body> <f:view> <h:form> <h:inputText value="#{jsfBean.field}"/> <h:commandButton action="#{jsfBean.submit}" value="Submit"> <f:phaseListener binding="#{jsfBean.phaseListenerImpl}" type="javabeat.jsf.PhaseListenerImpl"/> </h:commandButton> </h:form> </f:view> </body> </html>
JavaBean (JavaBeatJsfBean.java)
package javabeat.jsf; import javax.faces.event.ActionEvent; /** * source : www.javabeat.net */ public class JavaBeatJsfBean { private String field; private PhaseListenerImpl phaseListenerImpl; public PhaseListenerImpl getPhaseListenerImpl() { return phaseListenerImpl; } public void setPhaseListenerImpl(PhaseListenerImpl phaseListenerImpl) { this.phaseListenerImpl = phaseListenerImpl; } public String getField() { return field; } public void setField(String field) { this.field = field; } public void action() { System.out.println("Inside Action Listener"); } public void action(ActionEvent event) { System.out.println("Inside Action Listener"); } public String submit() { System.out.println(this.field); return "success"; } }
PhaseListener Implementation (PhaseListenerImpl.java)
package javabeat.jsf; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; /** * source : www.javabeat.net */ public class PhaseListenerImpl implements PhaseListener{ public void afterPhase(PhaseEvent event) { System.out.println("After Executing " + event.getPhaseId()); } public void beforePhase(PhaseEvent event) { System.out.println("Before Executing " + event.getPhaseId()); } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } }
faces-config.xml
<?xml version='1.0' encoding='UTF-8'?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>jsfBean</managed-bean-name> <managed-bean-class>javabeat.jsf.JavaBeatJsfBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>
Output
Before Executing APPLY_REQUEST_VALUES 2 After Executing APPLY_REQUEST_VALUES 2 Before Executing PROCESS_VALIDATIONS 3 After Executing PROCESS_VALIDATIONS 3 Before Executing UPDATE_MODEL_VALUES 4 After Executing UPDATE_MODEL_VALUES 4 Before Executing INVOKE_APPLICATION 5 Test Value After Executing INVOKE_APPLICATION 5 Before Executing RENDER_RESPONSE 6 After Executing RENDER_RESPONSE 6