Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.web.servlet.mvc.method.annotation
Class PathVariableMethodArgumentResolver

    java.lang.Object
      org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
          org.springframework.web.servlet.mvc.method.annotation.PathVariableMethodArgumentResolver

All Implemented Interfaces:
  HandlerMethodArgumentResolver

    public class PathVariableMethodArgumentResolver

extends AbstractNamedValueMethodArgumentResolver

Resolves method arguments annotated with an @`PathVariable`.

An @`PathVariable` is a named value that gets resolved from a URI template variable. It is always required and does not have a default value to fall back on. See the base class `AbstractNamedValueMethodArgumentResolver` for more information on how named values are processed.

If the method parameter type is `Map`, the name specified in the annotation is used to resolve the URI variable String value. The value is then converted to a `Map` via type conversion assuming a suitable `Converter` or `PropertyEditor` has been registered. Or if the annotation does not specify name the `RequestParamMapMethodArgumentResolver` is used instead to provide access to all URI variables in a map.

A `WebDataBinder` is invoked to apply type conversion to resolved path variable values that don't yet match the method parameter type.

Since:
  3.1
Author:
  Rossen Stoyanchev, Arjen Poutsma

Nested Class Summary

Nested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
`AbstractNamedValueMethodArgumentResolver.NamedValueInfo`

Constructor Summary
`PathVariableMethodArgumentResolver()`

Method Summary
`protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo` | `createNamedValueInfo(MethodParameter parameter)` Create the `AbstractNamedValueMethodArgumentResolver.NamedValueInfo` object for the given method parameter.
`protected void` | `handleMissingValue(java.lang.String name, MethodParameter param)` Invoked when a named value is required, but `AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)` returned `null` and there is no default value.
`protected void` | `handleResolvedValue(java.lang.Object arg, java.lang.String name, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request)` Invoked after a value is resolved.
`protected java.lang.Object` | `resolveName(java.lang.String name, MethodParameter parameter, NativeWebRequest request)` Resolves the given parameter type and value name into an argument value.
`boolean` | `supportsParameter(MethodParameter parameter)` Whether the given method parameter is supported by this resolver.

Methods inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
`resolveArgument`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PathVariableMethodArgumentResolver

    public PathVariableMethodArgumentResolver()

Method Detail

### supportsParameter

    public boolean supportsParameter(MethodParameter parameter)

  Description copied from interface: `HandlerMethodArgumentResolver`
  Whether the given method parameter is supported by this resolver.

  Parameters:
    `parameter` - the method parameter to check
  Returns:
    `true` if this resolver supports the supplied parameter; `false` otherwise

### createNamedValueInfo

    protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)

  Description copied from class: `AbstractNamedValueMethodArgumentResolver`
  Create the `AbstractNamedValueMethodArgumentResolver.NamedValueInfo` object for the given method parameter. Implementations typically retrieve the method annotation by means of `MethodParameter.getParameterAnnotation(Class)`.

  Specified by:
    `createNamedValueInfo` in class `AbstractNamedValueMethodArgumentResolver`
  Parameters:
    `parameter` - the method parameter
  Returns:
    the named value information

### resolveName

    protected java.lang.Object resolveName(java.lang.String name,
                                           MethodParameter parameter,
                                           NativeWebRequest request)
                                    throws java.lang.Exception

  Description copied from class: `AbstractNamedValueMethodArgumentResolver`
  Resolves the given parameter type and value name into an argument value.

  Specified by:
    `resolveName` in class `AbstractNamedValueMethodArgumentResolver`
  Parameters:
    `name` - the name of the value being resolved
    `parameter` - the method parameter to resolve to an argument value
    `request` - the current request
  Returns:
    the resolved argument. May be `null`
  Throws:
    `java.lang.Exception` - in case of errors

### handleMissingValue

    protected void handleMissingValue(java.lang.String name,
                                      MethodParameter param)
                               throws ServletRequestBindingException

  Description copied from class: `AbstractNamedValueMethodArgumentResolver`
  Invoked when a named value is required, but `AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)` returned `null` and there is no default value. Subclasses typically throw an exception in this case.

  Specified by:
    `handleMissingValue` in class `AbstractNamedValueMethodArgumentResolver`
  Parameters:
    `name` - the name for the value
    `param` - the method parameter
  Throws:
    `ServletRequestBindingException`

### handleResolvedValue

    protected void handleResolvedValue(java.lang.Object arg,
                                       java.lang.String name,
                                       MethodParameter parameter,
                                       ModelAndViewContainer mavContainer,
                                       NativeWebRequest request)

  Description copied from class: `AbstractNamedValueMethodArgumentResolver`
  Invoked after a value is resolved.

  Overrides:
    `handleResolvedValue` in class `AbstractNamedValueMethodArgumentResolver`
  Parameters:
    `arg` - the resolved argument value
    `name` - the argument name
    `parameter` - the argument parameter type
    `mavContainer` - the `ModelAndViewContainer`, which may be `null`
    `request` - the current request

Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD