Class RequestParamMethodArgumentResolver
java.lang.Object
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
org.springframework.web.method.annotation.RequestParamMethodArgumentResolver
- All Implemented Interfaces:
- HandlerMethodArgumentResolver,- UriComponentsContributor
public class RequestParamMethodArgumentResolver
extends AbstractNamedValueMethodArgumentResolver
implements UriComponentsContributor
Resolves method arguments annotated with @
RequestParam, arguments of
 type MultipartFile in conjunction with Spring's MultipartResolver
 abstraction, and arguments of type jakarta.servlet.http.Part in conjunction
 with Servlet multipart requests. This resolver can also be created in default
 resolution mode in which simple types (int, long, etc.) not annotated with
 @RequestParam are also treated as request parameters with
 the parameter name derived from the argument name.
 If the method parameter type is Map, the name specified in the
 annotation is used to resolve the request parameter String value. The value is
 then converted to a Map via type conversion assuming a suitable
 Converter or PropertyEditor has been registered.
 Or if a request parameter name is not specified the
 RequestParamMapMethodArgumentResolver is used instead to provide
 access to all request parameters in the form of a map.
 
A WebDataBinder is invoked to apply type conversion to resolved request
 header values that don't yet match the method parameter type.
- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolverAbstractNamedValueMethodArgumentResolver.NamedValueInfo
- 
Constructor SummaryConstructorsConstructorDescriptionRequestParamMethodArgumentResolver(boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance.RequestParamMethodArgumentResolver(ConfigurableBeanFactory beanFactory, boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance.
- 
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, NativeWebRequest request) 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 voidhandleMissingValueInternal(String name, MethodParameter parameter, NativeWebRequest request, boolean missingAfterConversion) protected ObjectresolveName(String name, MethodParameter parameter, NativeWebRequest request) Resolve the given parameter type and value name into an argument value.booleansupportsParameter(MethodParameter parameter) Supports the following: @RequestParam-annotated method arguments.Methods inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolverhandleMissingValue, handleResolvedValue, resolveArgument
- 
Constructor Details- 
RequestParamMethodArgumentResolverpublic RequestParamMethodArgumentResolver(boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance.- Parameters:
- useDefaultResolution- in default resolution mode a method argument that is a simple type, as defined in- BeanUtils.isSimpleProperty(java.lang.Class<?>), is treated as a request parameter even if it isn't annotated, the request parameter name is derived from the method parameter name.
 
- 
RequestParamMethodArgumentResolverpublic RequestParamMethodArgumentResolver(@Nullable ConfigurableBeanFactory beanFactory, boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance.- Parameters:
- beanFactory- a bean factory used for resolving ${...} placeholder and #{...} SpEL expressions in default values, or- nullif default values are not expected to contain expressions
- useDefaultResolution- in default resolution mode a method argument that is a simple type, as defined in- BeanUtils.isSimpleProperty(java.lang.Class<?>), is treated as a request parameter even if it isn't annotated, the request parameter name is derived from the method parameter name.
 
 
- 
- 
Method Details- 
supportsParameterSupports the following:- @RequestParam-annotated method arguments.
 This excludes Mapparams where the annotation does not specify a name. SeeRequestParamMapMethodArgumentResolverinstead for such params.
- Arguments of type MultipartFileunless annotated with @RequestPart.
- Arguments of type Partunless annotated with @RequestPart.
- In default resolution mode, simple type arguments even if not with @RequestParam.
 - 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
 
- @RequestParam-annotated method arguments.
 This excludes 
- 
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, NativeWebRequest request) throws Exception 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
- request- the current request
- Throws:
- Exception
 
- 
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
 
- 
handleMissingValueInternalprotected void handleMissingValueInternal(String name, MethodParameter parameter, NativeWebRequest request, boolean missingAfterConversion) throws Exception - Throws:
- Exception
 
- 
contributeMethodArgumentpublic void contributeMethodArgument(MethodParameter parameter, @Nullable 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, @Nullable Object value) 
 
-