Class RestActionMapper

java.lang.Object
org.apache.struts2.dispatcher.mapper.DefaultActionMapper
org.apache.struts2.rest.RestActionMapper
All Implemented Interfaces:
org.apache.struts2.dispatcher.mapper.ActionMapper

public class RestActionMapper extends org.apache.struts2.dispatcher.mapper.DefaultActionMapper
This Restful action mapper enforces Ruby-On-Rails Rest-style mappings. If the method is not specified (via '!' or 'method:' prefix), the method is "guessed" at using ReST-style conventions that examine the URL and the HTTP method. Special care has been given to ensure this mapper works correctly with the codebehind plugin so that XML configuration is unnecessary.

This mapper supports the following parameters:

  • struts.mapper.idParameterName - If set, this value will be the name of the parameter under which the id is stored. The id will then be removed from the action name. Whether or not the method is specified, the mapper will try to truncate the identifier from the url and store it as a parameter.
  • struts.mapper.indexMethodName - The method name to call for a GET request with no id parameter. Defaults to 'index'.
  • struts.mapper.getMethodName - The method name to call for a GET request with an id parameter. Defaults to 'show'.
  • struts.mapper.postMethodName - The method name to call for a POST request with no id parameter. Defaults to 'create'.
  • struts.mapper.putMethodName - The method name to call for a PUT request with an id parameter. Defaults to 'update'.
  • struts.mapper.deleteMethodName - The method name to call for a DELETE request with an id parameter. Defaults to 'destroy'.
  • struts.mapper.editMethodName - The method name to call for a GET request with an id parameter and the 'edit' view specified. Defaults to 'edit'.
  • struts.mapper.newMethodName - The method name to call for a GET request with no id parameter and the 'new' view specified. Defaults to 'editNew'.

The following URL's will invoke its methods:

  • GET: /movies => method="index"
  • GET: /movies/Thrillers => method="show", id="Thrillers"
  • GET: /movies/Thrillers;edit => method="edit", id="Thrillers"
  • GET: /movies/Thrillers/edit => method="edit", id="Thrillers"
  • GET: /movies/new => method="editNew"
  • POST: /movies => method="create"
  • PUT: /movies/Thrillers => method="update", id="Thrillers"
  • DELETE: /movies/Thrillers => method="destroy", id="Thrillers"

To simulate the HTTP methods PUT and DELETE, since they aren't supported by HTML, the HTTP parameter "_method" will be used.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
    protected static final org.apache.logging.log4j.Logger
     

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

    ACTION_PREFIX, allowedActionNames, allowedMethodNames, allowedNamespaceNames, allowSlashesInActionNames, alwaysSelectFullNamespace, container, defaultActionName, defaultMethodName, defaultNamespaceName, extensions, METHOD_PREFIX, prefixTrie
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
     
    org.apache.struts2.dispatcher.mapper.ActionMapping
    getMapping(jakarta.servlet.http.HttpServletRequest request, com.opensymphony.xwork2.config.ConfigurationManager configManager)
     
    protected boolean
    isDelete(jakarta.servlet.http.HttpServletRequest request)
     
    protected boolean
    isExpectContinue(jakarta.servlet.http.HttpServletRequest request)
     
    protected boolean
    isGet(jakarta.servlet.http.HttpServletRequest request)
     
    protected boolean
    isOptions(jakarta.servlet.http.HttpServletRequest request)
     
    protected boolean
    isPost(jakarta.servlet.http.HttpServletRequest request)
     
    protected boolean
    isPut(jakarta.servlet.http.HttpServletRequest request)
     
    protected void
    parseNameAndNamespace(String uri, org.apache.struts2.dispatcher.mapper.ActionMapping mapping, com.opensymphony.xwork2.config.ConfigurationManager configManager)
    Parses the name and namespace from the uri.
    void
    setAllowDynamicMethodCalls(String allowDynamicMethodCalls)
     
    void
    setDeleteMethodName(String deleteMethodName)
     
    void
    setEditMethodName(String editMethodName)
     
    void
    setGetMethodName(String getMethodName)
     
    void
    setIdParameterName(String idParameterName)
     
    void
    setIndexMethodName(String indexMethodName)
     
    void
    setNewMethodName(String newMethodName)
     
    void
    setOptionsMethodName(String optionsMethodName)
     
    void
    setPostContinueMethodName(String postContinueMethodName)
     
    void
    setPostMethodName(String postMethodName)
     
    void
    setPutContinueMethodName(String putContinueMethodName)
     
    void
    setPutMethodName(String putMethodName)
     

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

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

    Methods inherited from class java.lang.Object

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

    • LOG

      protected static final org.apache.logging.log4j.Logger LOG
    • HTTP_METHOD_PARAM

      public static final String HTTP_METHOD_PARAM
      See Also:
  • Constructor Details

    • RestActionMapper

      public RestActionMapper()
  • Method Details

    • getIdParameterName

      public String getIdParameterName()
    • setIdParameterName

      public void setIdParameterName(String idParameterName)
    • setIndexMethodName

      public void setIndexMethodName(String indexMethodName)
    • setGetMethodName

      public void setGetMethodName(String getMethodName)
    • setPostMethodName

      public void setPostMethodName(String postMethodName)
    • setEditMethodName

      public void setEditMethodName(String editMethodName)
    • setNewMethodName

      public void setNewMethodName(String newMethodName)
    • setDeleteMethodName

      public void setDeleteMethodName(String deleteMethodName)
    • setPutMethodName

      public void setPutMethodName(String putMethodName)
    • setOptionsMethodName

      public void setOptionsMethodName(String optionsMethodName)
    • setPostContinueMethodName

      public void setPostContinueMethodName(String postContinueMethodName)
    • setPutContinueMethodName

      public void setPutContinueMethodName(String putContinueMethodName)
    • setAllowDynamicMethodCalls

      public void setAllowDynamicMethodCalls(String allowDynamicMethodCalls)
      Overrides:
      setAllowDynamicMethodCalls in class org.apache.struts2.dispatcher.mapper.DefaultActionMapper
    • getMapping

      public org.apache.struts2.dispatcher.mapper.ActionMapping getMapping(jakarta.servlet.http.HttpServletRequest request, com.opensymphony.xwork2.config.ConfigurationManager configManager)
      Specified by:
      getMapping in interface org.apache.struts2.dispatcher.mapper.ActionMapper
      Overrides:
      getMapping in class org.apache.struts2.dispatcher.mapper.DefaultActionMapper
    • parseNameAndNamespace

      protected void parseNameAndNamespace(String uri, org.apache.struts2.dispatcher.mapper.ActionMapping mapping, com.opensymphony.xwork2.config.ConfigurationManager configManager)
      Parses the name and namespace from the uri. Uses the configured package namespaces to determine the name and id parameter, to be parsed later.
      Overrides:
      parseNameAndNamespace in class org.apache.struts2.dispatcher.mapper.DefaultActionMapper
      Parameters:
      uri - The uri
      mapping - The action mapping to populate
    • isGet

      protected boolean isGet(jakarta.servlet.http.HttpServletRequest request)
    • isPost

      protected boolean isPost(jakarta.servlet.http.HttpServletRequest request)
    • isPut

      protected boolean isPut(jakarta.servlet.http.HttpServletRequest request)
    • isDelete

      protected boolean isDelete(jakarta.servlet.http.HttpServletRequest request)
    • isOptions

      protected boolean isOptions(jakarta.servlet.http.HttpServletRequest request)
    • isExpectContinue

      protected boolean isExpectContinue(jakarta.servlet.http.HttpServletRequest request)