org.springframework.web.method.annotation.support
Class RequestParamMethodArgumentResolver
java.lang.Object
org.springframework.web.method.annotation.support.AbstractNamedValueMethodArgumentResolver
org.springframework.web.method.annotation.support.RequestParamMethodArgumentResolver
- All Implemented Interfaces:
- HandlerMethodArgumentResolver
public class RequestParamMethodArgumentResolver
- extends AbstractNamedValueMethodArgumentResolver
Resolves method arguments annotated with @RequestParam
, arguments of
type MultipartFile
in conjunction with Spring's MultipartResolver
abstraction, and arguments of type javax.servlet.http.Part
in 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 @RequestParam
are also treated as request parameters with the
parameter name derived from the argument name.
If the method parameter type is Map
, the request parameter name 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. If a request parameter name is not specified with a Map
method
parameter type, the RequestParamMapMethodArgumentResolver
is used instead
providing 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
- See Also:
RequestParamMapMethodArgumentResolver
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
useDefaultResolution
private final boolean useDefaultResolution
RequestParamMethodArgumentResolver
public RequestParamMethodArgumentResolver(ConfigurableBeanFactory beanFactory,
boolean useDefaultResolution)
- Parameters:
beanFactory
- a bean factory used for resolving ${...} placeholder
and #{...} SpEL expressions in default values, or null
if default
values are not expected to contain expressionsuseDefaultResolution
- 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 itsn't annotated, the
request parameter name is derived from the method parameter name.
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
- Supports the following:
- Parameters:
parameter
- the method parameter to check
- Returns:
true
if this resolver supports the supplied parameter;
false
otherwise
createNamedValueInfo
protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
- Description copied from class:
AbstractNamedValueMethodArgumentResolver
- Create the
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
object for the given method parameter. Implementations typically
retrieve the method annotation by means of MethodParameter.getParameterAnnotation(Class)
.
- Specified by:
createNamedValueInfo
in class AbstractNamedValueMethodArgumentResolver
- Parameters:
parameter
- the method parameter
- Returns:
- the named value information
resolveName
protected java.lang.Object resolveName(java.lang.String name,
MethodParameter parameter,
NativeWebRequest webRequest)
throws java.lang.Exception
- Description copied from class:
AbstractNamedValueMethodArgumentResolver
- Resolves the given parameter type and value name into an argument value.
- Specified by:
resolveName
in class AbstractNamedValueMethodArgumentResolver
- Parameters:
name
- the name of the value being resolvedparameter
- the method parameter to resolve to an argument valuewebRequest
- the current request
- Returns:
- the resolved argument. May be
null
- Throws:
java.lang.Exception
- in case of errors
assertIsMultipartRequest
private void assertIsMultipartRequest(HttpServletRequest request)
isMultipartRequest
private boolean isMultipartRequest(HttpServletRequest request)
isMultipartFileCollection
private boolean isMultipartFileCollection(MethodParameter parameter)
handleMissingValue
protected void handleMissingValue(java.lang.String paramName,
MethodParameter parameter)
throws ServletException
- Description copied from class:
AbstractNamedValueMethodArgumentResolver
- Invoked when a named value is required, but
AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest)
returned null
and there is no default value. Subclasses typically throw an exception in this case.
- Specified by:
handleMissingValue
in class AbstractNamedValueMethodArgumentResolver
- Parameters:
paramName
- the name for the valueparameter
- the method parameter
- Throws:
ServletException