public class ServletModelAttributeMethodProcessor extends ModelAttributeMethodProcessor
ModelAttributeMethodProcessor that applies data
binding through a WebDataBinder of type ServletRequestDataBinder.
Also adds a fall-back strategy to instantiate the model attribute from a URI template variable or from a request parameter if the name matches the model attribute name and there is an appropriate type conversion strategy.
logger| Constructor and Description |
|---|
ServletModelAttributeMethodProcessor(boolean annotationNotRequired) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
bindRequestParameters(WebDataBinder binder,
NativeWebRequest request)
Extension point to bind the request to the target object.
|
protected java.lang.Object |
createAttribute(java.lang.String attributeName,
MethodParameter parameter,
WebDataBinderFactory binderFactory,
NativeWebRequest request)
Instantiate the model attribute from a URI template variable or from a
request parameter if the name matches to the model attribute name and
if there is an appropriate type conversion strategy.
|
protected java.lang.Object |
createAttributeFromRequestValue(java.lang.String sourceValue,
java.lang.String attributeName,
MethodParameter parameter,
WebDataBinderFactory binderFactory,
NativeWebRequest request)
Create a model attribute from a String request value (e.g.
|
protected java.lang.String |
getRequestValueForAttribute(java.lang.String attributeName,
NativeWebRequest request)
Obtain a value from the request that may be used to instantiate the
model attribute through type conversion from String to the target type.
|
protected java.util.Map<java.lang.String,java.lang.String> |
getUriTemplateVariables(NativeWebRequest request) |
handleReturnValue, isBindExceptionRequired, resolveArgument, supportsParameter, supportsReturnType, validateIfApplicablepublic ServletModelAttributeMethodProcessor(boolean annotationNotRequired)
annotationNotRequired - if "true", non-simple method arguments and
return values are considered model attributes with or without a
@ModelAttribute annotation.protected final java.lang.Object createAttribute(java.lang.String attributeName,
MethodParameter parameter,
WebDataBinderFactory binderFactory,
NativeWebRequest request)
throws java.lang.Exception
createAttribute in class ModelAttributeMethodProcessorattributeName - the name of the attribute, never nullparameter - the method parameterbinderFactory - for creating WebDataBinder instancerequest - the current requestnulljava.lang.ExceptioncreateAttributeFromRequestValue(String, String, MethodParameter, WebDataBinderFactory, NativeWebRequest)protected java.lang.String getRequestValueForAttribute(java.lang.String attributeName,
NativeWebRequest request)
The default implementation looks for the attribute name to match a URI variable first and then a request parameter.
attributeName - the model attribute namerequest - the current requestnullprotected final java.util.Map<java.lang.String,java.lang.String> getUriTemplateVariables(NativeWebRequest request)
protected java.lang.Object createAttributeFromRequestValue(java.lang.String sourceValue,
java.lang.String attributeName,
MethodParameter parameter,
WebDataBinderFactory binderFactory,
NativeWebRequest request)
throws java.lang.Exception
The default implementation converts only if there a registered
Converter that can perform the conversion.
sourceValue - the source value to create the model attribute fromattributeName - the name of the attribute, never nullparameter - the method parameterbinderFactory - for creating WebDataBinder instancerequest - the current requestnulljava.lang.Exceptionprotected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request)
Downcast WebDataBinder to ServletRequestDataBinder before binding.
bindRequestParameters in class ModelAttributeMethodProcessorbinder - the data binder instance to use for the bindingrequest - the current requestServletRequestDataBinderFactory