类 RequestParamMethodArgumentResolver
- java.lang.Object
- org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
- org.springframework.web.method.annotation.RequestParamMethodArgumentResolver
public class RequestParamMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver implements UriComponentsContributor
Resolves method arguments annotated with @RequestParam, arguments of typeMultipartFilein conjunction with Spring'sMultipartResolverabstraction, and arguments of typejavax.servlet.http.Partin conjunction with Servlet 3.0 multipart requests. This resolver can also be created in default resolution mode in which simple types (int, long, etc.) not annotated with@RequestParamare 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 aMapvia type conversion assuming a suitableConverterorPropertyEditorhas been registered. Or if a request parameter name is not specified theRequestParamMapMethodArgumentResolveris used instead to provide access to all request parameters in the form of a map.A
WebDataBinderis invoked to apply type conversion to resolved request header values that don't yet match the method parameter type.- 从以下版本开始:
- 3.1
- 作者:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel
- 另请参阅:
RequestParamMapMethodArgumentResolver
嵌套类概要
从类继承的嵌套类/接口 org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
构造器概要
构造器 构造器 说明 RequestParamMethodArgumentResolver(boolean useDefaultResolution)Create a newRequestParamMethodArgumentResolverinstance.RequestParamMethodArgumentResolver(ConfigurableBeanFactory beanFactory, boolean useDefaultResolution)Create a newRequestParamMethodArgumentResolverinstance.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 voidcontributeMethodArgument(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.protected AbstractNamedValueMethodArgumentResolver.NamedValueInfocreateNamedValueInfo(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 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.从类继承的方法 org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
handleMissingValue, handleResolvedValue, resolveArgument
构造器详细资料
RequestParamMethodArgumentResolver
public RequestParamMethodArgumentResolver(boolean useDefaultResolution)
Create a newRequestParamMethodArgumentResolverinstance.- 参数:
useDefaultResolution- in default resolution mode a method argument that is a simple type, as defined inBeanUtils.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.
RequestParamMethodArgumentResolver
public RequestParamMethodArgumentResolver(@Nullable ConfigurableBeanFactory beanFactory, boolean useDefaultResolution)
Create a newRequestParamMethodArgumentResolverinstance.- 参数:
beanFactory- a bean factory used for resolving ${...} placeholder and #{...} SpEL expressions in default values, ornullif default values are not expected to contain expressionsuseDefaultResolution- in default resolution mode a method argument that is a simple type, as defined inBeanUtils.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.
方法详细资料
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
Supports 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.
- 指定者:
supportsParameter在接口中HandlerMethodArgumentResolver- 指定者:
supportsParameter在接口中UriComponentsContributor- 参数:
parameter- the method parameter to check- 返回:
trueif this resolver supports the supplied parameter;falseotherwise
- @RequestParam-annotated method arguments. This excludes
createNamedValueInfo
protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfoobject for the given method parameter. Implementations typically retrieve the method annotation by means ofMethodParameter.getParameterAnnotation(Class).- 指定者:
createNamedValueInfo在类中AbstractNamedValueMethodArgumentResolver- 参数:
parameter- the method parameter- 返回:
- the named value information
resolveName
@Nullable protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception
Resolve the given parameter type and value name into an argument value.- 指定者:
resolveName在类中AbstractNamedValueMethodArgumentResolver- 参数:
name- the name of the value being resolvedparameter- the method parameter to resolve to an argument value (pre-nested in case of aOptionaldeclaration)request- the current request- 返回:
- the resolved argument (may be
null) - 抛出:
Exception- in case of errors
handleMissingValue
protected void handleMissingValue(String name, MethodParameter parameter, NativeWebRequest request) throws Exception
Invoked 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.- 覆盖:
handleMissingValue在类中AbstractNamedValueMethodArgumentResolver- 参数:
name- the name for the valueparameter- the method parameterrequest- the current request- 抛出:
Exception
contributeMethodArgument
public void contributeMethodArgument(MethodParameter parameter, @Nullable Object value, UriComponentsBuilder builder, Map<String,Object> uriVariables, ConversionService conversionService)
从接口复制的说明: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.- 指定者:
contributeMethodArgument在接口中UriComponentsContributor- 参数:
parameter- the controller method parameter (nevernull)value- the argument value (possiblynull)builder- the builder to update (nevernull)uriVariables- a map to add URI variables to (nevernull)conversionService- a ConversionService to format values as Strings
formatUriValue
@Nullable protected String formatUriValue(@Nullable ConversionService cs, @Nullable TypeDescriptor sourceType, @Nullable Object value)