In JSF 2.2 it is possible to define flows, one of the things you would want to do is to be able to enter and to exit a flow. This blog entry shows you a sample on how you can enter a flow and also how to exit it properly.
The page below uses a commandButton to enter the flow "enterexit"
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Enter and Exit Flow sample</title>
</h:head>
<h:body>
<h1>Enter and Exit Flow sample</h1>
<h:form>
<h:commandButton action="enterexit" value="Enter"/>
</h:form>
</h:body>
</html>
Now that we entered the flow we are going to define the exit point.
<faces-config version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
<flow-definition id="enterexit">
<flow-return id="taskFlowReturn1">
<from-outcome>/exit</from-outcome>
</flow-return>
</flow-definition>
</faces-config>
We have defined the exit point so now we are going to show you the page that allows you to exit the flow
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Enter and Exit Flow sample</title>
</h:head>
<h:body>
<h1>Entered flow
<h:form>
<h:commandButton action="taskFlowReturn1" value="Exit"/>
</h:form>
</h:body>
</html>
And lets verify we actually exited the flow
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Enter and Exit Flow sample</title>
</h:head>
<h:body>
<h1>Enter and Exit Flow sample</h1>
<p>
We exited the flow.
</p>
<p>
Do you want to <a href="#{facesContext.externalContext.requestContextPath}/faces/index.xhtml">Start over</a>
</p>
</h:body>
</html>
Posted November 18, 2013