org.springframework.web.servlet.mvc.multiaction

## Class AbstractUrlMethodNameResolver

- java.lang.Object
- - org.springframework.web.servlet.mvc.multiaction.AbstractUrlMethodNameResolver

- All Implemented Interfaces:
    MethodNameResolver
  Direct Known Subclasses:
    InternalPathMethodNameResolver, PropertiesMethodNameResolver

      public abstract class AbstractUrlMethodNameResolver
      extends Object
      implements MethodNameResolver

  Abstract base class for URL-based `MethodNameResolver` implementations.

  Provides infrastructure for mapping handlers to URLs and configurable URL lookup. For information on the latter, see the `setAlwaysUseFullPath(boolean)` "alwaysUseFullPath"} and `"urlDecode"` properties.

  Since:
    14.01.2004
  Author:
    Juergen Hoeller

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger` Logger available to subclasses

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractUrlMethodNameResolver()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getHandlerMethodName(HttpServletRequest request)` Retrieves the URL path to use for lookup and delegates to `getHandlerMethodNameForUrlPath`.
    `protected abstract String` | `getHandlerMethodNameForUrlPath(String urlPath)` Return a method name that can handle this request, based on the given lookup path.
    `void` | `setAlwaysUseFullPath(boolean alwaysUseFullPath)` Set if URL lookup should always use full path within current servlet context.
    `void` | `setUrlDecode(boolean urlDecode)` Set if context path and request URI should be URL-decoded.
    `void` | `setUrlPathHelper(UrlPathHelper urlPathHelper)` Set the UrlPathHelper to use for resolution of lookup paths.

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

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

- - ### Field Detail

    - #### logger

          protected final Log logger

      Logger available to subclasses

  - ### Constructor Detail

    - #### AbstractUrlMethodNameResolver

          public AbstractUrlMethodNameResolver()

  - ### Method Detail

    - #### setAlwaysUseFullPath

          public void setAlwaysUseFullPath(boolean alwaysUseFullPath)

      Set if URL lookup should always use full path within current servlet context. Else, the path within the current servlet mapping is used if applicable (i.e. in the case of a ".../*" servlet mapping in web.xml). Default is "false".
      See Also:
        `UrlPathHelper.setAlwaysUseFullPath(boolean)`

    - #### setUrlDecode

          public void setUrlDecode(boolean urlDecode)

      Set if context path and request URI should be URL-decoded. Both are returned undecoded by the Servlet API, in contrast to the servlet path.

      Uses either the request encoding or the default encoding according to the Servlet spec (ISO-8859-1).

      See Also:
        `UrlPathHelper.setUrlDecode(boolean)`

    - #### setUrlPathHelper

          public void setUrlPathHelper(UrlPathHelper urlPathHelper)

      Set the UrlPathHelper to use for resolution of lookup paths.

      Use this to override the default UrlPathHelper with a custom subclass, or to share common UrlPathHelper settings across multiple MethodNameResolvers and HandlerMappings.

      See Also:
        `AbstractHandlerMapping.setUrlPathHelper(org.springframework.web.util.UrlPathHelper)`

    - #### getHandlerMethodName

          public final String getHandlerMethodName(HttpServletRequest request)
                                            throws NoSuchRequestHandlingMethodException

      Retrieves the URL path to use for lookup and delegates to `getHandlerMethodNameForUrlPath`. Converts `null` values to NoSuchRequestHandlingMethodExceptions.
      Specified by:
        `getHandlerMethodName` in interface `MethodNameResolver`
      Parameters:
        `request` - current HTTP request
      Returns:
        a method name that can handle this request. Never returns `null`; throws exception if not resolvable.
      Throws:
        `NoSuchRequestHandlingMethodException` - if no handler method can be found for the given request
      See Also:
        `getHandlerMethodNameForUrlPath(java.lang.String)`

    - #### getHandlerMethodNameForUrlPath

          protected abstract String getHandlerMethodNameForUrlPath(String urlPath)

      Return a method name that can handle this request, based on the given lookup path. Called by `getHandlerMethodName`.
      Parameters:
        `urlPath` - the URL path to use for lookup, according to the settings in this class
      Returns:
        a method name that can handle this request. Should return null if no matching method found.
      See Also:
        `getHandlerMethodName(javax.servlet.http.HttpServletRequest)`, `setAlwaysUseFullPath(boolean)`, `setUrlDecode(boolean)`