Class ConversationAwareViewHandler

java.lang.Object
jakarta.faces.application.ViewHandler
jakarta.faces.application.ViewHandlerWrapper
org.jboss.weld.module.jsf.ConversationAwareViewHandler
All Implemented Interfaces:
jakarta.faces.FacesWrapper<jakarta.faces.application.ViewHandler>

public class ConversationAwareViewHandler extends jakarta.faces.application.ViewHandlerWrapper

A forwarding JSF ViewHandler implementation that produces URLs containing the conversation id query string parameter. All methods except those which produce a URL that need to be enhanced are forwarded to the ViewHandler delegate.

A request parameter was chosen to propagate the conversation because it's the most technology agnostic approach for passing data between requests and allows for the ensuing request to use whatever means necessary (a servlet filter, phase listener, etc) to capture the conversation id and restore the long-running conversation.

Author:
Dan Allen, Pete Muir, Ales Justin, Marko Luksa
  • Field Summary

    Fields inherited from class jakarta.faces.application.ViewHandler

    CHARACTER_ENCODING_KEY, DEFAULT_FACELETS_SUFFIX, DEFAULT_SUFFIX, DEFAULT_SUFFIX_PARAM_NAME, FACELETS_BUFFER_SIZE_PARAM_NAME, FACELETS_DECORATORS_PARAM_NAME, FACELETS_LIBRARIES_PARAM_NAME, FACELETS_REFRESH_PERIOD_PARAM_NAME, FACELETS_SKIP_COMMENTS_PARAM_NAME, FACELETS_SUFFIX_PARAM_NAME, FACELETS_VIEW_MAPPINGS_PARAM_NAME
  • Constructor Summary

    Constructors
    Constructor
    Description
    ConversationAwareViewHandler(jakarta.faces.application.ViewHandler delegate)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    getActionURL(jakarta.faces.context.FacesContext facesContext, String viewId)
    Allow the delegate to produce the action URL.
    getBookmarkableURL(jakarta.faces.context.FacesContext context, String viewId, Map<String,List<String>> parameters, boolean includeViewParams)
     
    getRedirectURL(jakarta.faces.context.FacesContext context, String viewId, Map<String,List<String>> parameters, boolean includeViewParams)
     
    getResourceURL(jakarta.faces.context.FacesContext context, String path)
     
    jakarta.faces.application.ViewHandler
     

    Methods inherited from class jakarta.faces.application.ViewHandlerWrapper

    addProtectedView, calculateCharacterEncoding, calculateLocale, calculateRenderKitId, createView, deriveLogicalViewId, deriveViewId, getProtectedViewsUnmodifiable, getViewDeclarationLanguage, getViews, getViews, getWebsocketURL, initView, removeProtectedView, renderView, restoreView, writeState

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ConversationAwareViewHandler

      public ConversationAwareViewHandler(jakarta.faces.application.ViewHandler delegate)
  • Method Details

    • getActionURL

      public String getActionURL(jakarta.faces.context.FacesContext facesContext, String viewId)
      Allow the delegate to produce the action URL. If the conversation is long-running, append the conversation id request parameter to the query string part of the URL, but only if the request parameter is not already present.

      This covers form actions Ajax calls, and redirect URLs (which we want) and link hrefs (which we don't)

      Overrides:
      getActionURL in class jakarta.faces.application.ViewHandlerWrapper
    • getBookmarkableURL

      public String getBookmarkableURL(jakarta.faces.context.FacesContext context, String viewId, Map<String,List<String>> parameters, boolean includeViewParams)
      Overrides:
      getBookmarkableURL in class jakarta.faces.application.ViewHandlerWrapper
    • getRedirectURL

      public String getRedirectURL(jakarta.faces.context.FacesContext context, String viewId, Map<String,List<String>> parameters, boolean includeViewParams)
      Overrides:
      getRedirectURL in class jakarta.faces.application.ViewHandlerWrapper
    • getResourceURL

      public String getResourceURL(jakarta.faces.context.FacesContext context, String path)
      Overrides:
      getResourceURL in class jakarta.faces.application.ViewHandlerWrapper
    • getWrapped

      public jakarta.faces.application.ViewHandler getWrapped()
      Specified by:
      getWrapped in interface jakarta.faces.FacesWrapper<jakarta.faces.application.ViewHandler>
      Overrides:
      getWrapped in class jakarta.faces.application.ViewHandlerWrapper