How to implement f:phaseListener for h:commandButton?
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. This following program provides very basic example for using f:phaseListener inside h:commandButton.
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:phaseListener binding="#{jsfBean.phaseListenerImpl}" type="javabeat.jsf.PhaseListenerImpl"/>
</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
40
| 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| 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
1
2
3
4
5
6
7
8
9
10
11
| <?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
1
2
3
4
5
6
7
8
9
10
11
| 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
July 8, 2008
JSF