Class PathVariableMethodArgumentResolver
java.lang.Object
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
org.springframework.web.servlet.mvc.method.annotation.PathVariableMethodArgumentResolver
- All Implemented Interfaces:
- HandlerMethodArgumentResolver,- UriComponentsContributor
public class PathVariableMethodArgumentResolver
extends AbstractNamedValueMethodArgumentResolver
implements UriComponentsContributor
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.
 
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, Juergen Hoeller
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolverAbstractNamedValueMethodArgumentResolver.NamedValueInfo
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidcontributeMethodArgument(MethodParameter parameter, Object value, UriComponentsBuilder builder, Map<String, Object> uriVariables, ConversionService conversionService) Process the given method argument and either update theUriComponentsBuilderor add to the map with URI variables to use to expand the URI after all arguments are processed.createNamedValueInfo(MethodParameter parameter) Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfoobject for the given method parameter.protected StringformatUriValue(ConversionService cs, TypeDescriptor sourceType, Object value) protected voidhandleMissingValue(String name, MethodParameter parameter) Invoked when a named value is required, butAbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)returnednulland there is no default value.protected voidhandleMissingValueAfterConversion(String name, MethodParameter parameter, NativeWebRequest request) Invoked when a named value is present but becomesnullafter conversion.protected voidhandleResolvedValue(Object arg, String name, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request) Invoked after a value is resolved.protected ObjectresolveName(String name, MethodParameter parameter, NativeWebRequest request) Resolve the given parameter type and value name into an argument value.booleansupportsParameter(MethodParameter parameter) Whether this contributor supports the given method parameter.Methods inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolverhandleMissingValue, resolveArgument
- 
Constructor Details- 
PathVariableMethodArgumentResolverpublic PathVariableMethodArgumentResolver()
 
- 
- 
Method Details- 
supportsParameterDescription copied from interface:UriComponentsContributorWhether this contributor supports the given method parameter.- Specified by:
- supportsParameterin interface- HandlerMethodArgumentResolver
- Specified by:
- supportsParameterin interface- UriComponentsContributor
- Parameters:
- parameter- the method parameter to check
- Returns:
- trueif this resolver supports the supplied parameter;- falseotherwise
 
- 
createNamedValueInfoprotected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter) Description copied from class:AbstractNamedValueMethodArgumentResolverCreate theAbstractNamedValueMethodArgumentResolver.NamedValueInfoobject for the given method parameter. Implementations typically retrieve the method annotation by means ofMethodParameter.getParameterAnnotation(Class).- Specified by:
- createNamedValueInfoin class- AbstractNamedValueMethodArgumentResolver
- Parameters:
- parameter- the method parameter
- Returns:
- the named value information
 
- 
resolveName@Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception Description copied from class:AbstractNamedValueMethodArgumentResolverResolve the given parameter type and value name into an argument value.- Specified by:
- resolveNamein class- AbstractNamedValueMethodArgumentResolver
- Parameters:
- name- the name of the value being resolved
- parameter- the method parameter to resolve to an argument value (pre-nested in case of a- Optionaldeclaration)
- request- the current request
- Returns:
- the resolved argument (may be null)
- Throws:
- Exception- in case of errors
 
- 
handleMissingValueprotected void handleMissingValue(String name, MethodParameter parameter) throws ServletRequestBindingException Description copied from class:AbstractNamedValueMethodArgumentResolverInvoked when a named value is required, butAbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)returnednulland there is no default value. Subclasses typically throw an exception in this case.- Overrides:
- handleMissingValuein class- AbstractNamedValueMethodArgumentResolver
- Parameters:
- name- the name for the value
- parameter- the method parameter
- Throws:
- ServletRequestBindingException
 
- 
handleMissingValueAfterConversionprotected void handleMissingValueAfterConversion(String name, MethodParameter parameter, NativeWebRequest request) throws Exception Description copied from class:AbstractNamedValueMethodArgumentResolverInvoked when a named value is present but becomesnullafter conversion.- Overrides:
- handleMissingValueAfterConversionin class- AbstractNamedValueMethodArgumentResolver
- Parameters:
- name- the name for the value
- parameter- the method parameter
- request- the current request
- Throws:
- Exception
 
- 
handleResolvedValueprotected void handleResolvedValue(@Nullable Object arg, String name, MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest request) Description copied from class:AbstractNamedValueMethodArgumentResolverInvoked after a value is resolved.- Overrides:
- handleResolvedValuein class- AbstractNamedValueMethodArgumentResolver
- Parameters:
- arg- the resolved argument value
- name- the argument name
- parameter- the argument parameter type
- mavContainer- the- ModelAndViewContainer(may be- null)
- request- the current request
 
- 
contributeMethodArgumentpublic void contributeMethodArgument(MethodParameter parameter, Object value, UriComponentsBuilder builder, Map<String, Object> uriVariables, ConversionService conversionService) Description copied from interface:UriComponentsContributorProcess the given method argument and either update theUriComponentsBuilderor add to the map with URI variables to use to expand the URI after all arguments are processed.- Specified by:
- contributeMethodArgumentin interface- UriComponentsContributor
- Parameters:
- parameter- the controller method parameter (never- null)
- value- the argument value (possibly- null)
- builder- the builder to update (never- null)
- uriVariables- a map to add URI variables to (never- null)
- conversionService- a ConversionService to format values as Strings
 
- 
formatUriValue@Nullable protected String formatUriValue(@Nullable ConversionService cs, @Nullable TypeDescriptor sourceType, Object value) 
 
-