|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.web.method.annotation.ModelAttributeMethodProcessor
public class ModelAttributeMethodProcessor
Resolves method arguments annotated with @ModelAttribute
and handles
return values from methods annotated with @ModelAttribute
.
Model attributes are obtained from the model or if not found possibly
created with a default constructor if it is available. Once created, the
attributed is populated with request data via data binding and also
validation may be applied if the argument is annotated with
@javax.validation.Valid
.
When this handler is created with annotationNotRequired=true
,
any non-simple type argument and return value is regarded as a model
attribute with or without the presence of an @ModelAttribute
.
Field Summary | |
---|---|
protected Log |
logger
|
Constructor Summary | |
---|---|
ModelAttributeMethodProcessor(boolean annotationNotRequired)
|
Method Summary | |
---|---|
protected void |
bindRequestParameters(WebDataBinder binder,
NativeWebRequest request)
Extension point to bind the request to the target object. |
protected Object |
createAttribute(String attributeName,
MethodParameter parameter,
WebDataBinderFactory binderFactory,
NativeWebRequest request)
Extension point to create the model attribute if not found in the model. |
void |
handleReturnValue(Object returnValue,
MethodParameter returnType,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest)
Add non-null return values to the ModelAndViewContainer . |
protected boolean |
isBindExceptionRequired(WebDataBinder binder,
MethodParameter parameter)
Whether to raise a BindException on bind or validation errors. |
Object |
resolveArgument(MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest request,
WebDataBinderFactory binderFactory)
Resolve the argument from the model or if not found instantiate it with its default if it is available. |
boolean |
supportsParameter(MethodParameter parameter)
Whether the given method parameter is supported by this resolver. |
boolean |
supportsReturnType(MethodParameter returnType)
Return true if there is a method-level @ModelAttribute
or if it is a non-simple type when annotationNotRequired=true . |
protected void |
validateIfApplicable(WebDataBinder binder,
MethodParameter parameter)
Validate the model attribute if applicable. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected Log logger
Constructor Detail |
---|
public ModelAttributeMethodProcessor(boolean annotationNotRequired)
annotationNotRequired
- if "true", non-simple method arguments and
return values are considered model attributes with or without a
@ModelAttribute
annotation.Method Detail |
---|
public boolean supportsParameter(MethodParameter parameter)
HandlerMethodArgumentResolver
supportsParameter
in interface HandlerMethodArgumentResolver
parameter
- the method parameter to check
ModelAttribute
or in default resolution mode also if it is not a simple type.public final Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request, WebDataBinderFactory binderFactory) throws Exception
@java.validation.Valid
is present on the argument.
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 requestrequest
- the current requestbinderFactory
- a factory for creating WebDataBinder
instances
null
.
BindException
- if data binding and validation result in an error
and the next method parameter is not of type Errors
.
Exception
- if WebDataBinder initialization fails.protected Object createAttribute(String attributeName, MethodParameter parameter, WebDataBinderFactory binderFactory, NativeWebRequest request) throws Exception
attributeName
- the name of the attribute, never null
parameter
- the method parameterbinderFactory
- for creating WebDataBinder instancerequest
- the current request
null
Exception
protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request)
binder
- the data binder instance to use for the bindingrequest
- the current requestprotected void validateIfApplicable(WebDataBinder binder, MethodParameter parameter)
The default implementation checks for @javax.validation.Valid
.
binder
- the DataBinder to be usedparameter
- the method parameterprotected boolean isBindExceptionRequired(WebDataBinder binder, MethodParameter parameter)
BindException
on bind or validation errors.
The default implementation returns true
if the next method
argument is not of type Errors
.
binder
- the data binder used to perform data bindingparameter
- the method argumentpublic boolean supportsReturnType(MethodParameter returnType)
true
if there is a method-level @ModelAttribute
or if it is a non-simple type when annotationNotRequired=true
.
supportsReturnType
in interface HandlerMethodReturnValueHandler
returnType
- the method return type to check
true
if this handler supports the supplied return type;
false
otherwisepublic void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception
ModelAndViewContainer
.
handleReturnValue
in interface HandlerMethodReturnValueHandler
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have
previously been passed to
HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
and it must have returned true
mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current request
Exception
- if the return value handling results in an error
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |