How to implement f:phaseListener for h:commandButton?

SHARE & COMMENT :

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

Comments

comments

About Krishna Srinivasan

He is Founder and Chief Editor of JavaBeat. He has more than 8+ years of experience on developing Web applications. He writes about Spring, DOJO, JSF, Hibernate and many other emerging technologies in this blog.

Speak Your Mind

*

Close
Please support the site
By clicking any of these buttons you help our site to get better