Package org.apache.struts2.dispatcher.mapper

# Class PrefixBasedActionMapper

java.lang.Object
org.apache.struts2.dispatcher.mapper.DefaultActionMapper
org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper

All Implemented Interfaces:
  `ActionMapper`

public class PrefixBasedActionMapper extends DefaultActionMapper implements ActionMapper

A prefix based action mapper that is capable of delegating to other `ActionMapper`s based on the request's prefix.
It is configured through struts.xml
For example, with the following entries in struts.properties

     <constant name="struts.mapper.class" value="prefix"/>
     <constant name="struts.mapper.prefixMapping" value="/communities:pseudoRestful,/communityTags:pseudoRestful,/events:pseudoRestful,/mediaList:pseudoRestful,/users:pseudoRestful,/community:struts,/communityTag:struts,/event:struts,/media:struts,/user:struts,:struts"/>

When `getMapping(HttpServletRequest, ConfigurationManager)` or `getUriFromActionMapping(ActionMapping)` is invoked, `PrefixBasedActionMapper` will check each possible prefix (url prefix terminating just before a /) to find the most specific ActionMapper that returns a mapping when asked to map the request. If none are found, null is returned for both `getMapping(HttpServletRequest, ConfigurationManager)` and `getUriFromActionMapping(ActionMapping)` methods.

See Also:
  - `ActionMapper`
  - `ActionMapping`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map<String,ActionMapper>`
  `actionMappers`
  `protected Container`
  `container`

  ### Fields inherited from class org.apache.struts2.dispatcher.mapper.DefaultActionMapper

  `ACTION_PREFIX, allowDynamicMethodCalls, allowedActionNames, allowedMethodNames, allowedNamespaceNames, allowSlashesInActionNames, alwaysSelectFullNamespace, defaultActionName, defaultMethodName, defaultNamespaceName, extensions, METHOD_PREFIX, prefixTrie`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PrefixBasedActionMapper()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ActionMapping`
  `getMapping(jakarta.servlet.http.HttpServletRequest request, ConfigurationManager configManager)`
  Expose the ActionMapping for the current request
  `String`
  `getUriFromActionMapping(ActionMapping mapping)`
  Convert an ActionMapping into a URI string
  `void`
  `setContainer(Container container)`
  `void`
  `setPrefixBasedActionMappers(String list)`

  ### Methods inherited from class org.apache.struts2.dispatcher.mapper.DefaultActionMapper

  `addParameterAction, cleanupActionName, cleanupMethodName, cleanupNamespaceName, dropExtension, extractMethodName, getDefaultExtension, getMappingFromActionName, handleDynamicMethod, handleExtension, handleName, handleNamespace, handleParams, handleSpecialParameters, isSlashesInActionNames, lookupExtension, parseActionName, parseNameAndNamespace, setAllowActionPrefix, setAllowDynamicMethodCalls, setAllowedActionNames, setAllowedMethodNames, setAllowedNamespaceNames, setAlwaysSelectFullNamespace, setDefaultActionName, setDefaultMethodName, setDefaultNamespaceName, setExtensions, setSlashesInActionNames`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.struts2.dispatcher.mapper.ActionMapper

  `getMappingFromActionName`

- ## Field Details

  - ### container

    protected Container container

  - ### actionMappers

    protected Map<String,ActionMapper> actionMappers

- ## Constructor Details

  - ### PrefixBasedActionMapper

    public PrefixBasedActionMapper()

- ## Method Details

  - ### setContainer

    public void setContainer(Container container)
    Overrides:
      `setContainer` in class `DefaultActionMapper`

  - ### setPrefixBasedActionMappers

    public void setPrefixBasedActionMappers(String list)

  - ### getMapping

    public ActionMapping getMapping(jakarta.servlet.http.HttpServletRequest request, ConfigurationManager configManager)
    Description copied from interface: `ActionMapper`
    Expose the ActionMapping for the current request
    Specified by:
      `getMapping` in interface `ActionMapper`
    Overrides:
      `getMapping` in class `DefaultActionMapper`
    Parameters:
      `request` - The servlet request
      `configManager` - The current configuration manager
    Returns:
      The appropriate action mapping or null if mapping cannot be determined

  - ### getUriFromActionMapping

    public String getUriFromActionMapping(ActionMapping mapping)
    Description copied from interface: `ActionMapper`
    Convert an ActionMapping into a URI string
    Specified by:
      `getUriFromActionMapping` in interface `ActionMapper`
    Overrides:
      `getUriFromActionMapping` in class `DefaultActionMapper`
    Parameters:
      `mapping` - The action mapping
    Returns:
      The URI string that represents this mapping