public class PathVariableMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver
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.
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
Constructor and Description |
---|
PathVariableMethodArgumentResolver() |
Modifier and Type | Method and Description |
---|---|
protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo |
createNamedValueInfo(MethodParameter parameter)
Create the
AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter. |
protected void |
handleMissingValue(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(Object arg,
String name,
MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest request)
Invoked after a value is resolved.
|
protected Object |
resolveName(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.
|
resolveArgument
public boolean supportsParameter(MethodParameter parameter)
HandlerMethodArgumentResolver
parameter
- the method parameter to checktrue
if this resolver supports the supplied parameter;
false
otherwiseprotected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
object for the given method parameter. Implementations typically
retrieve the method annotation by means of MethodParameter.getParameterAnnotation(Class)
.createNamedValueInfo
in class AbstractNamedValueMethodArgumentResolver
parameter
- the method parameterprotected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception
AbstractNamedValueMethodArgumentResolver
resolveName
in class AbstractNamedValueMethodArgumentResolver
name
- the name of the value being resolvedparameter
- the method parameter to resolve to an argument valuerequest
- the current requestnull
Exception
- in case of errorsprotected void handleMissingValue(String name, MethodParameter param) throws ServletRequestBindingException
AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)
returned null
and there is no default value. Subclasses typically throw an exception in this case.handleMissingValue
in class AbstractNamedValueMethodArgumentResolver
name
- the name for the valueparam
- the method parameterServletRequestBindingException
protected void handleResolvedValue(Object arg, String name, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request)
AbstractNamedValueMethodArgumentResolver
handleResolvedValue
in class AbstractNamedValueMethodArgumentResolver
arg
- the resolved argument valuename
- the argument nameparameter
- the argument parameter typemavContainer
- the ModelAndViewContainer
, which may be null
request
- the current request