13.6. Issues in a Portlet Environment

Redirects

The Portlet API only allows redirects to be requested from an action request. Because views are rendered on the render request, views and view-states cannot trigger a redirect.

The externalRedirect: view prefix is a convenience for Servlet based flows. An IllegalStateException is thrown if a redirect is requested from a render request.

end-state redirects can be achieved by implementing FlowHandler.handleExecutionOutcome. This callback provides the ActionResponse object which supports redirects.

Switching Portlet Modes

The portlet container passes the execution key from the previous flow when switching to a new mode. Even if the mode is mapped to a different FlowHandler the flow execution will resume the previous execution. You may switch the mode programatically in your FlowHandler after ending a flow in an ActionRequest.

One way to start a new flow is to create a URL targeting the mode without the execution key.

Portlets and JSF

Web Flow supports JSF as the view technology for a portlet. However, a jsf-portlet bridge (JSR-301) must be provided. At the time of this writing, no feature complete jsf-portlet bridge exists. Some of the existing bridge implementations may appear to work, however, side effect may occur.

JSF portlets are considered experimental at this time.