public abstract class AbstractNamedValueMethodArgumentResolver extends Object implements HandlerMethodArgumentResolver
Subclasses define how to do the following:
A default value string can contain ${...} placeholders and Spring Expression
Language #{...} expressions. For this to work a
ConfigurableBeanFactory
must be supplied to the class constructor.
A WebDataBinder
is created to apply type conversion to the resolved
argument value if it doesn't match the method parameter type.
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
Represents the information about a named value, including name, whether it's required and a default value.
|
Constructor and Description |
---|
AbstractNamedValueMethodArgumentResolver() |
AbstractNamedValueMethodArgumentResolver(org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory) |
Modifier and Type | Method and Description |
---|---|
protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo |
createNamedValueInfo(org.springframework.core.MethodParameter parameter)
Create the
AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter. |
protected abstract void |
handleMissingValue(String name,
org.springframework.core.MethodParameter parameter)
Invoked when a named value is required, but
resolveName(String, MethodParameter, NativeWebRequest)
returned null and there is no default value. |
protected void |
handleResolvedValue(Object arg,
String name,
org.springframework.core.MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest)
Invoked after a value is resolved.
|
Object |
resolveArgument(org.springframework.core.MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest,
WebDataBinderFactory binderFactory)
Resolves a method parameter into an argument value from a given request.
|
protected abstract Object |
resolveName(String name,
org.springframework.core.MethodParameter parameter,
NativeWebRequest request)
Resolves the given parameter type and value name into an argument value.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
supportsParameter
public AbstractNamedValueMethodArgumentResolver()
public AbstractNamedValueMethodArgumentResolver(org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory)
beanFactory
- a bean factory to use for resolving ${...} placeholder
and #{...} SpEL expressions in default values, or null
if default
values are not expected to contain expressionspublic final Object resolveArgument(org.springframework.core.MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception
HandlerMethodArgumentResolver
ModelAndViewContainer
provides access to the model for the
request. A WebDataBinderFactory
provides a way to create
a WebDataBinder
instance when needed for data binding and
type conversion purposes.resolveArgument
in interface HandlerMethodArgumentResolver
parameter
- the method parameter to resolve. This parameter must
have previously been passed to HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
which must
have returned true
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestbinderFactory
- a factory for creating WebDataBinder
instancesnull
Exception
- in case of errors with the preparation of argument valuesprotected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(org.springframework.core.MethodParameter parameter)
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
object for the given method parameter. Implementations typically
retrieve the method annotation by means of MethodParameter.getParameterAnnotation(Class)
.parameter
- the method parameterprotected abstract Object resolveName(String name, org.springframework.core.MethodParameter parameter, NativeWebRequest request) throws Exception
name
- the name of the value being resolvedparameter
- the method parameter to resolve to an argument valuerequest
- the current requestnull
Exception
- in case of errorsprotected abstract void handleMissingValue(String name, org.springframework.core.MethodParameter parameter) throws ServletException
resolveName(String, MethodParameter, NativeWebRequest)
returned null
and there is no default value. Subclasses typically throw an exception in this case.name
- the name for the valueparameter
- the method parameterServletException
protected void handleResolvedValue(Object arg, String name, org.springframework.core.MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest)
arg
- the resolved argument valuename
- the argument nameparameter
- the argument parameter typemavContainer
- the ModelAndViewContainer
, which may be null
webRequest
- the current request