Spring Web Flow

org.springframework.webflow.mvc.servlet
Interface FlowHandler

All Known Implementing Classes:
AbstractFlowHandler

public interface FlowHandler

A controller helper used for customizing access to a single flow definition in a Servlet enviroment. This helper is used to:

  1. Launch executions of that flow with data in the execution input map
  2. Handle outcomes reached by that flow in a custom manner
  3. Handle unhandled exceptions dealing with that flow in a custom manner.
Such a handler can be visually thought of as a "flow reference" on a Garrett IA diagram. It holds a reference to the flow id to launch, how to provision its input, how to process its outcomes, and how to handle uncaught exceptions.

Author:
Keith Donald

Method Summary
 MutableAttributeMap<java.lang.Object> createExecutionInputMap(javax.servlet.http.HttpServletRequest request)
          Creates the flow execution input map to pass to a new instance of the flow being started.
 java.lang.String getFlowId()
          Returns the id of the flow handled by this handler.
 java.lang.String handleException(FlowException e, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Handles a flow exception that was not handled by the Web Flow system.
 java.lang.String handleExecutionOutcome(FlowExecutionOutcome outcome, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Handles a specific flow execution outcome.
 

Method Detail

getFlowId

java.lang.String getFlowId()
Returns the id of the flow handled by this handler. Used by a Controller to load the flow definition. Optional.

Returns:
the flow id, or null if the flow id should be determined by the caller

createExecutionInputMap

MutableAttributeMap<java.lang.Object> createExecutionInputMap(javax.servlet.http.HttpServletRequest request)
Creates the flow execution input map to pass to a new instance of the flow being started. Used by a Controller to launch the flow execution with the correct input.

Parameters:
request - the current request
Returns:
the input map, or null if the contents of the input map should be determined by the caller

handleExecutionOutcome

java.lang.String handleExecutionOutcome(FlowExecutionOutcome outcome,
                                        javax.servlet.http.HttpServletRequest request,
                                        javax.servlet.http.HttpServletResponse response)
Handles a specific flow execution outcome. Used by a Controller to get the location of the resource to redirect to after the outcome is handled.

The following prefixes are supported for qualifying the returned location string:

If the returned location is a path with no prefix, for example "/hotels/index", it is treated as relative to the current servlet by default. Fully qualified URLs beginning with http:// or https:// may also be returned.

For servlet-relative, context-relative, and server-relative URLs, a leading slash is optional.

Parameters:
outcome - the outcome that was reached
request - the current request
response - the current response
Returns:
the location of the new resource to redirect to, or null if the execution outcome was not handled and should be handled by the caller

handleException

java.lang.String handleException(FlowException e,
                                 javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response)
Handles a flow exception that was not handled by the Web Flow system. Used by a Controller to handle a specific type of exception dealing with this flow in a custom manner.

Parameters:
e - the unhandled exception originating from Spring Web Flow. May be thrown by the flow execution itself or the flow executor system if no execution could be restored.
request - the current request
response - the current response
Returns:
the location of the error resource to redirect to, or null if the execution outcome was not handled and should be handled by the caller

Spring Web Flow