public final class ModelFactory extends Object
Model before controller method
 invocation and to update it afterwards. On initialization, the model is
 populated with attributes from the session or by invoking
 @ModelAttribute methods. On update, model attributes are
 synchronized with the session -- either adding or removing them.
 Also BindingResult attributes where missing.| Constructor and Description | 
|---|
ModelFactory(List<InvocableHandlerMethod> attributeMethods,
            WebDataBinderFactory binderFactory,
            SessionAttributesHandler sessionAttributesHandler)
Create a new instance with the given  
@ModelAttribute methods. | 
| Modifier and Type | Method and Description | 
|---|---|
static String | 
getNameForParameter(MethodParameter parameter)
Derives the model attribute name for a method parameter based on:
 
        The parameter  
@ModelAttribute annotation value
        The parameter type
  | 
static String | 
getNameForReturnValue(Object returnValue,
                     MethodParameter returnType)
Derive the model attribute name for the given return value using
 one of the following:
 
        The method  
ModelAttribute annotation value
        The declared return type if it is other than Object
        The actual return value type
  | 
void | 
initModel(NativeWebRequest request,
         ModelAndViewContainer mavContainer,
         HandlerMethod handlerMethod)
Populate the model in the following order:
 
        Retrieve "known" session attributes -- i.e. 
 | 
void | 
updateModel(NativeWebRequest request,
           ModelAndViewContainer mavContainer)
Synchronize model attributes with the session. 
 | 
public ModelFactory(List<InvocableHandlerMethod> attributeMethods, WebDataBinderFactory binderFactory, SessionAttributesHandler sessionAttributesHandler)
@ModelAttribute methods.attributeMethods - for model initializationbinderFactory - for adding BindingResult attributessessionAttributesHandler - for access to session attributespublic void initModel(NativeWebRequest request, ModelAndViewContainer mavContainer, HandlerMethod handlerMethod) throws Exception
@SessionAttributes and previously stored in
        the in the model at least once
        @ModelAttribute methods
        request - the current requestmavContainer - contains the model to be initializedhandlerMethod - the method for which the model is initializedException - may arise from @ModelAttribute methodspublic static String getNameForReturnValue(Object returnValue, MethodParameter returnType)
ModelAttribute annotation value
        Object
        returnValue - the value returned from a method invocationreturnType - the return type of the methodnull nor emptypublic static String getNameForParameter(MethodParameter parameter)
@ModelAttribute annotation value
        null or an empty stringpublic void updateModel(NativeWebRequest request, ModelAndViewContainer mavContainer) throws Exception
BindingResult
 attributes where necessary.request - the current requestmavContainer - contains the model to updateException - if creating BindingResult attributes fails