|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
public abstract class AbstractNamedValueMethodArgumentResolver
Abstract base class for resolving method arguments from a named value. Request parameters, request headers, and path variables are examples of named values. Each may have a name, a required flag, and a default value.
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.
Nested Class Summary | |
---|---|
protected static class |
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
Represents the information about a named value, including name, whether it's required and a default value. |
Constructor Summary | |
---|---|
AbstractNamedValueMethodArgumentResolver(ConfigurableBeanFactory beanFactory)
|
Method Summary | |
---|---|
protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo |
createNamedValueInfo(MethodParameter parameter)
Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter. |
protected abstract void |
handleMissingValue(String name,
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,
MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest)
Invoked after a value is resolved. |
Object |
resolveArgument(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,
MethodParameter parameter,
NativeWebRequest request)
Resolves the given parameter type and value name into an argument value. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.springframework.web.method.support.HandlerMethodArgumentResolver |
---|
supportsParameter |
Constructor Detail |
---|
public AbstractNamedValueMethodArgumentResolver(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 expressionsMethod Detail |
---|
public final Object resolveArgument(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)
and it must have returned true
mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestbinderFactory
- a factory for creating WebDataBinder
instances
null
.
Exception
- in case of errors with the preparation of argument valuesprotected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(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 parameter
protected abstract Object resolveName(String name, 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 request
null
Exception
- in case of errorsprotected abstract void handleMissingValue(String name, 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 parameter
ServletException
protected void handleResolvedValue(Object arg, String name, 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
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |