类 RequestParamMethodArgumentResolver
java.lang.Object
cn.taketoday.web.bind.resolver.AbstractNamedValueResolvingStrategy
cn.taketoday.web.bind.resolver.RequestParamMethodArgumentResolver
public class RequestParamMethodArgumentResolver
extends AbstractNamedValueResolvingStrategy
implements UriComponentsContributor
Resolves method arguments annotated with @
RequestParam, arguments of
type MultipartFile in conjunction with MultipartRequest
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.
- 从以下版本开始:
- 4.0 2022/4/28 13:57
- 作者:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel, Harry Yang
- 另请参阅:
-
字段概要
字段修饰符和类型字段说明private static final cn.taketoday.core.TypeDescriptorprivate final boolean -
构造器概要
构造器构造器说明RequestParamMethodArgumentResolver(boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance.RequestParamMethodArgumentResolver(cn.taketoday.beans.factory.config.ConfigurableBeanFactory beanFactory, boolean useDefaultResolution) Create a newRequestParamMethodArgumentResolverinstance. -
方法概要
修饰符和类型方法说明voidcontributeMethodArgument(cn.taketoday.core.MethodParameter parameter, Object value, UriComponentsBuilder builder, Map<String, Object> uriVariables, cn.taketoday.core.conversion.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 StringformatUriValue(cn.taketoday.core.conversion.ConversionService cs, cn.taketoday.core.TypeDescriptor sourceType, Object value) protected voidhandleMissingValue(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) Invoked when a named value is required, butAbstractNamedValueResolvingStrategy.resolveName(String, ResolvableMethodParameter, RequestContext)returnednulland there is no default value.protected voidhandleMissingValueAfterConversion(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) Invoked when a named value is present but becomesnullafter conversion.protected voidhandleMissingValueInternal(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request, boolean missingAfterConversion) protected ObjectresolveName(String name, ResolvableMethodParameter resolvable, RequestContext request) Resolve the given parameter type and value name into an argument value.booleansupportsParameter(cn.taketoday.core.MethodParameter parameter) Supports the following: @RequestParam-annotated method arguments.booleansupportsParameter(ResolvableMethodParameter resolvable) Whether the given parameter is supported by this resolver.从类继承的方法 cn.taketoday.web.bind.resolver.AbstractNamedValueResolvingStrategy
getNamedValueInfo, handleMissingValue, handleResolvedValue, resolveArgument
-
字段详细资料
-
STRING_TYPE_DESCRIPTOR
private static final cn.taketoday.core.TypeDescriptor STRING_TYPE_DESCRIPTOR -
useDefaultResolution
private final boolean useDefaultResolution
-
-
构造器详细资料
-
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 cn.taketoday.beans.factory.config.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(cn.taketoday.core.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在接口中UriComponentsContributor
- @RequestParam-annotated method arguments.
This excludes
-
supportsParameter
从接口复制的说明:ParameterResolvingStrategyWhether the given parameter is supported by this resolver.static match
- 指定者:
supportsParameter在接口中ParameterResolvingStrategy
-
resolveName
@Nullable protected Object resolveName(String name, ResolvableMethodParameter resolvable, RequestContext request) throws Exception 从类复制的说明:AbstractNamedValueResolvingStrategyResolve the given parameter type and value name into an argument value.- 指定者:
resolveName在类中AbstractNamedValueResolvingStrategy- 参数:
name- the name of the value being resolvedresolvable- the method parameter to resolve to an argument value (pre-nested in case of aOptionaldeclaration)request- the current request context- 返回:
- the resolved argument (may be
null) - 抛出:
Exception- in case of errors
-
handleMissingValue
protected void handleMissingValue(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) throws Exception 从类复制的说明:AbstractNamedValueResolvingStrategyInvoked when a named value is required, butAbstractNamedValueResolvingStrategy.resolveName(String, ResolvableMethodParameter, RequestContext)returnednulland there is no default value. Subclasses typically throw an exception in this case.- 覆盖:
handleMissingValue在类中AbstractNamedValueResolvingStrategy- 参数:
name- the name for the valueparameter- the method parameterrequest- the current request- 抛出:
Exception
-
handleMissingValueAfterConversion
protected void handleMissingValueAfterConversion(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request) throws Exception 从类复制的说明:AbstractNamedValueResolvingStrategyInvoked when a named value is present but becomesnullafter conversion.- 覆盖:
handleMissingValueAfterConversion在类中AbstractNamedValueResolvingStrategy- 参数:
name- the name for the valueparameter- the method parameterrequest- the current request- 抛出:
Exception
-
handleMissingValueInternal
protected void handleMissingValueInternal(String name, cn.taketoday.core.MethodParameter parameter, RequestContext request, boolean missingAfterConversion) throws Exception - 抛出:
Exception
-
contributeMethodArgument
public void contributeMethodArgument(cn.taketoday.core.MethodParameter parameter, @Nullable Object value, UriComponentsBuilder builder, Map<String, Object> uriVariables, cn.taketoday.core.conversion.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
-