Spring WebFlow
"Spring WebFlow (SWF) is a product focused on the definition and execution of page flow within a web application..."
TODO: This needs to be updated to SWF 1.0.
Description
Integration with Spring Webflow is done through DanubeFlowController which is an implementation of Controller. It uses DanubeExternalContext as implementation of ExternalContext .
Configuration
DanubeFlowController has several attributes:
flowLocator
- a flow locator. Setting a flow locator is going to set flow executor (FlowExecutorImpl) implicitly.
flowExecutor
- a flow locator.
defaultFlowId
- default flow id.
argumentExtractor
- an argument extractor. Defaulted to the FlowExecutorArgumentExtractor.
sessionManager
- session manager to be used. If not set then defaulted to SimpleSessionManager.
attributes
- flow attributes. They are equivalent to static, servlet context attributes.
Note: DanubeFlowController implementation is based on FlowController so most of the attributes are the same (like flowLocator
, flowExecutor
, defaultFlowId
, argumentExtractor
).
Example
Here is an example of an configuration of Spring Webflow (with FreeMarker) taken from supplied demo:
<!-- * This bean defines beans application context. * It references MVC controller defined at the "/guess.do" path. --> <bean name="webflow-freemarker-example-applicaiton" class="org.abstracthorizon.danube.http.HTTPContext"> <property name="components"> <list> <bean class="org.abstracthorizon.danube.http.matcher.Prefix"> <property name="prefix"><value>/guess.do</value></property> <property name="connectionHandler"><ref bean="guess.do"/></property> </bean> </list> </property> </bean> <!-- * This is MVC controller that has Spring WebFlow as a controller and FreeMarker as a view adapter. --> <bean name="guess.do" class="org.abstracthorizon.danube.http.HTTPMVCConnectionHandler"> <property name="controller"><ref bean="webFlowController" /></property> <property name="view"><ref bean="freemarkerViewAdapter" /></property> </bean> <!-- * This is WebFlow controller. Flow locator is defined through flow registry bean and * "bean-explorer-flow" is set as defualt flow id --> <bean name="webFlowController" class="org.abstracthorizon.danube.webflow.DanubeFlowController"> <property name="flowLocator"><ref bean="flowRegistry" /></property> <property name="defaultFlowId"><value>guess-flow</value></property> </bean> <!-- * Flow registry defines where flow definitions are to be read from. --> <bean id="flowRegistry" class="org.springframework.webflow.registry.XmlFlowRegistryFactoryBean"> <property name="flowLocations" value="guess-flow.xml"/> </bean> <!-- * This is FreeMarker view adapter. * It defines directory "pages" as location of templates and ".page" as templates' suffix. --> <bean id="freemarkerViewAdapter" class="org.abstracthorizon.danube.freemarker.FreeMarkerViewAdapter" init-method="init"> <property name="templatesLocation"><value>pages/</value></property> <property name="suffix"><value>.page</value></property> </bean>