Class ModelFactory
java.lang.Object
org.springframework.web.method.annotation.ModelFactory
Assist with initialization of the 
Model before controller method
 invocation and with updates to it after the invocation.
 On initialization the model is populated with attributes temporarily stored
 in the session and through the invocation of @ModelAttribute methods.
 
On update model attributes are synchronized with the session and also
 BindingResult attributes are added if missing.
- Since:
- 3.1
- Author:
- Rossen Stoyanchev
- 
Constructor SummaryConstructorsConstructorDescriptionModelFactory(List<InvocableHandlerMethod> handlerMethods, WebDataBinderFactory binderFactory, SessionAttributesHandler attributeHandler) Create a new instance with the given@ModelAttributemethods.
- 
Method SummaryModifier and TypeMethodDescriptionstatic StringgetNameForParameter(MethodParameter parameter) Derive the model attribute name for the given method parameter based on a@ModelAttributeparameter annotation (if present) or falling back on parameter type based conventions.static StringgetNameForReturnValue(Object returnValue, MethodParameter returnType) Derive the model attribute name for the given return value.voidinitModel(NativeWebRequest request, ModelAndViewContainer container, HandlerMethod handlerMethod) Populate the model in the following order: Retrieve "known" session attributes listed as@SessionAttributes.voidupdateModel(NativeWebRequest request, ModelAndViewContainer container) Promote model attributes listed as@SessionAttributesto the session.
- 
Constructor Details- 
ModelFactorypublic ModelFactory(@Nullable List<InvocableHandlerMethod> handlerMethods, WebDataBinderFactory binderFactory, SessionAttributesHandler attributeHandler) Create a new instance with the given@ModelAttributemethods.- Parameters:
- handlerMethods- the- @ModelAttributemethods to invoke
- binderFactory- for preparation of- BindingResultattributes
- attributeHandler- for access to session attributes
 
 
- 
- 
Method Details- 
initModelpublic void initModel(NativeWebRequest request, ModelAndViewContainer container, HandlerMethod handlerMethod) throws Exception Populate the model in the following order:- Retrieve "known" session attributes listed as @SessionAttributes.
- Invoke @ModelAttributemethods
- Find @ModelAttributemethod arguments also listed as@SessionAttributesand ensure they're present in the model raising an exception if necessary.
 - Parameters:
- request- the current request
- container- a container with the model to be initialized
- handlerMethod- the method for which the model is initialized
- Throws:
- Exception- may arise from- @ModelAttributemethods
 
- Retrieve "known" session attributes listed as 
- 
updateModelPromote model attributes listed as@SessionAttributesto the session. AddBindingResultattributes where necessary.- Parameters:
- request- the current request
- container- contains the model to update
- Throws:
- Exception- if creating BindingResult attributes fails
 
- 
getNameForParameterDerive the model attribute name for the given method parameter based on a@ModelAttributeparameter annotation (if present) or falling back on parameter type based conventions.- Parameters:
- parameter- a descriptor for the method parameter
- Returns:
- the derived name
- See Also:
 
- 
getNameForReturnValuepublic static String getNameForReturnValue(@Nullable Object returnValue, MethodParameter returnType) Derive the model attribute name for the given return value. Results will be based on:- the method ModelAttributeannotation value
- the declared return type if it is more specific than Object
- the actual return value type
 - Parameters:
- returnValue- the value returned from a method invocation
- returnType- a descriptor for the return type of the method
- Returns:
- the derived name (never nullor empty String)
 
- the method 
 
-