How to implement ActionListener (f:actionListener) in JSF?

July 5, 2008

JSF

Introduction

This article explains how to implement the ActionListener class in the JSF core tag library. An ActionListener is an event handler interface for a class that can respond to user events in your JSF page. The body content of this tag must be empty.

JSP File (index.jsp)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@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:actionListener binding="#{jsfBean.actionListenerImpl}" type="javabeat.jsf.ActionListenerImpl"/>
                </h:commandButton>
            </h:form>
        </f:view>
    </body>
</html>

JavaBean (JavaBeatJsfBean.java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package javabeat.jsf;
 
import javax.faces.event.ActionEvent;
 
/**
 * source : www.javabeat.net
 */
public class JavaBeatJsfBean {
 
    private String field;
    private ActionListenerImpl actionListenerImpl;
 
    public ActionListenerImpl getActionListenerImpl() {
        return actionListenerImpl;
    }
 
    public void setActionListenerImpl(ActionListenerImpl actionListenerImpl) {
        this.actionListenerImpl = actionListenerImpl;
    }
    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";
    }
}

ActionListener implementation class (ActionListenerImpl.java)

1
2
3
4
5
6
7
8
9
10
11
12
13
package javabeat.jsf;
 
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
 
public class ActionListenerImpl implements ActionListener {
 
    public void processAction(ActionEvent event)
            throws AbortProcessingException {
        System.out.println("Inside Process Action");
    }
}

faces-config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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>
email

Comments

comments