public class RequestParamMethodArgumentResolver extends AbstractNamedValueSyncArgumentResolver
RequestParam
from URI
query string parameters.
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
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.
RequestParamMapMethodArgumentResolver
AbstractNamedValueArgumentResolver.NamedValueInfo
logger
Constructor and Description |
---|
RequestParamMethodArgumentResolver(ConfigurableBeanFactory factory,
ReactiveAdapterRegistry registry,
boolean useDefaultResolution)
Class constructor with a default resolution mode flag.
|
Modifier and Type | Method and Description |
---|---|
protected AbstractNamedValueArgumentResolver.NamedValueInfo |
createNamedValueInfo(MethodParameter parameter)
Create the
AbstractNamedValueArgumentResolver.NamedValueInfo object for the given method parameter. |
protected void |
handleMissingValue(String name,
MethodParameter parameter,
ServerWebExchange exchange)
Invoked when a named value is required, but
AbstractNamedValueArgumentResolver.resolveName(String, MethodParameter, ServerWebExchange) returned
null and there is no default value. |
protected Object |
resolveNamedValue(String name,
MethodParameter parameter,
ServerWebExchange exchange)
Actually resolve the value synchronously.
|
boolean |
supportsParameter(MethodParameter param)
Whether this resolver supports the given method parameter.
|
resolveArgument, resolveArgumentValue, resolveName
handleMissingValue, handleResolvedValue
checkAnnotatedParamNoReactiveWrapper, checkParameterType, checkParameterTypeNoReactiveWrapper, getAdapterRegistry
public RequestParamMethodArgumentResolver(@Nullable ConfigurableBeanFactory factory, ReactiveAdapterRegistry registry, boolean useDefaultResolution)
factory
- a bean factory used for resolving ${...} placeholder
and #{...} SpEL expressions in default values, or null
if default
values are not expected to contain expressionsregistry
- for checking reactive type wrappersuseDefaultResolution
- 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.public boolean supportsParameter(MethodParameter param)
HandlerMethodArgumentResolver
param
- the method parameterprotected AbstractNamedValueArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
AbstractNamedValueArgumentResolver
AbstractNamedValueArgumentResolver.NamedValueInfo
object for the given method parameter.
Implementations typically retrieve the method annotation by means of
MethodParameter.getParameterAnnotation(Class)
.createNamedValueInfo
in class AbstractNamedValueArgumentResolver
parameter
- the method parameterprotected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange)
AbstractNamedValueSyncArgumentResolver
resolveNamedValue
in class AbstractNamedValueSyncArgumentResolver
protected void handleMissingValue(String name, MethodParameter parameter, ServerWebExchange exchange)
AbstractNamedValueArgumentResolver
AbstractNamedValueArgumentResolver.resolveName(String, MethodParameter, ServerWebExchange)
returned
null
and there is no default value. Subclasses typically throw an
exception in this case.handleMissingValue
in class AbstractNamedValueArgumentResolver
name
- the name for the valueparameter
- the method parameterexchange
- the current exchange