org.springframework.web.servlet
Class ModelAndView

java.lang.Object
  extended by org.springframework.web.servlet.ModelAndView

public class ModelAndView
extends Object

Holder for both Model and View in the web MVC framework. Note that these are entirely distinct. This class merely holds both to make it possible for a controller to return both model and view in a single return value.

Represents a model and view returned by a handler, to be resolved by a DispatcherServlet. The view can take the form of a String view name which will need to be resolved by a ViewResolver object; alternatively a View object can be specified directly. The model is a Map, allowing the use of multiple objects keyed by name.

Author:
Rod Johnson, Juergen Hoeller, Rob Harrop
See Also:
DispatcherServlet, ViewResolver, HandlerAdapter.handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object), Controller.handleRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

Constructor Summary
ModelAndView()
          Default constructor for bean-style usage: populating bean properties instead of passing in constructor arguments.
ModelAndView(String viewName)
          Convenient constructor when there is no model data to expose.
ModelAndView(String viewName, Map<String,?> model)
          Creates new ModelAndView given a view name and a model.
ModelAndView(String viewName, String modelName, Object modelObject)
          Convenient constructor to take a single model object.
ModelAndView(View view)
          Convenient constructor when there is no model data to expose.
ModelAndView(View view, Map<String,?> model)
          Creates new ModelAndView given a View object and a model.
ModelAndView(View view, String modelName, Object modelObject)
          Convenient constructor to take a single model object.
 
Method Summary
 ModelAndView addAllObjects(Map<String,?> modelMap)
          Add all attributes contained in the provided Map to the model.
 ModelAndView addObject(Object attributeValue)
          Add an attribute to the model using parameter name generation.
 ModelAndView addObject(String attributeName, Object attributeValue)
          Add an attribute to the model.
 void clear()
          Clear the state of this ModelAndView object.
 Map<String,Object> getModel()
          Return the model map.
protected  Map<String,Object> getModelInternal()
          Return the model map.
 ModelMap getModelMap()
          Return the underlying ModelMap instance (never null).
 View getView()
          Return the View object, or null if we are using a view name to be resolved by the DispatcherServlet via a ViewResolver.
 String getViewName()
          Return the view name to be resolved by the DispatcherServlet via a ViewResolver, or null if we are using a View object.
 boolean hasView()
          Indicate whether or not this ModelAndView has a view, either as a view name or as a direct View instance.
 boolean isEmpty()
          Return whether this ModelAndView object is empty, i.e.
 boolean isReference()
          Return whether we use a view reference, i.e.
 void setView(View view)
          Set a View object for this ModelAndView.
 void setViewName(String viewName)
          Set a view name for this ModelAndView, to be resolved by the DispatcherServlet via a ViewResolver.
 String toString()
          Return diagnostic information about this model and view.
 boolean wasCleared()
          Return whether this ModelAndView object is empty as a result of a call to clear() i.e.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ModelAndView

public ModelAndView()
Default constructor for bean-style usage: populating bean properties instead of passing in constructor arguments.

See Also:
setView(View), setViewName(String)

ModelAndView

public ModelAndView(String viewName)
Convenient constructor when there is no model data to expose. Can also be used in conjunction with addObject.

Parameters:
viewName - name of the View to render, to be resolved by the DispatcherServlet's ViewResolver
See Also:
addObject(java.lang.String, java.lang.Object)

ModelAndView

public ModelAndView(View view)
Convenient constructor when there is no model data to expose. Can also be used in conjunction with addObject.

Parameters:
view - View object to render
See Also:
addObject(java.lang.String, java.lang.Object)

ModelAndView

public ModelAndView(String viewName,
                    Map<String,?> model)
Creates new ModelAndView given a view name and a model.

Parameters:
viewName - name of the View to render, to be resolved by the DispatcherServlet's ViewResolver
model - Map of model names (Strings) to model objects (Objects). Model entries may not be null, but the model Map may be null if there is no model data.

ModelAndView

public ModelAndView(View view,
                    Map<String,?> model)
Creates new ModelAndView given a View object and a model. Note: the supplied model data is copied into the internal storage of this class. You should not consider to modify the supplied Map after supplying it to this class

Parameters:
view - View object to render
model - Map of model names (Strings) to model objects (Objects). Model entries may not be null, but the model Map may be null if there is no model data.

ModelAndView

public ModelAndView(String viewName,
                    String modelName,
                    Object modelObject)
Convenient constructor to take a single model object.

Parameters:
viewName - name of the View to render, to be resolved by the DispatcherServlet's ViewResolver
modelName - name of the single entry in the model
modelObject - the single model object

ModelAndView

public ModelAndView(View view,
                    String modelName,
                    Object modelObject)
Convenient constructor to take a single model object.

Parameters:
view - View object to render
modelName - name of the single entry in the model
modelObject - the single model object
Method Detail

setViewName

public void setViewName(String viewName)
Set a view name for this ModelAndView, to be resolved by the DispatcherServlet via a ViewResolver. Will override any pre-existing view name or View.


getViewName

public String getViewName()
Return the view name to be resolved by the DispatcherServlet via a ViewResolver, or null if we are using a View object.


setView

public void setView(View view)
Set a View object for this ModelAndView. Will override any pre-existing view name or View.


getView

public View getView()
Return the View object, or null if we are using a view name to be resolved by the DispatcherServlet via a ViewResolver.


hasView

public boolean hasView()
Indicate whether or not this ModelAndView has a view, either as a view name or as a direct View instance.


isReference

public boolean isReference()
Return whether we use a view reference, i.e. true if the view has been specified via a name to be resolved by the DispatcherServlet via a ViewResolver.


getModelInternal

protected Map<String,Object> getModelInternal()
Return the model map. May return null. Called by DispatcherServlet for evaluation of the model.


getModelMap

public ModelMap getModelMap()
Return the underlying ModelMap instance (never null).


getModel

public Map<String,Object> getModel()
Return the model map. Never returns null. To be called by application code for modifying the model.


addObject

public ModelAndView addObject(String attributeName,
                              Object attributeValue)
Add an attribute to the model.

Parameters:
attributeName - name of the object to add to the model
attributeValue - object to add to the model (never null)
See Also:
ModelMap.addAttribute(String, Object), getModelMap()

addObject

public ModelAndView addObject(Object attributeValue)
Add an attribute to the model using parameter name generation.

Parameters:
attributeValue - the object to add to the model (never null)
See Also:
ModelMap.addAttribute(Object), getModelMap()

addAllObjects

public ModelAndView addAllObjects(Map<String,?> modelMap)
Add all attributes contained in the provided Map to the model.

Parameters:
modelMap - a Map of attributeName -> attributeValue pairs
See Also:
ModelMap.addAllAttributes(Map), getModelMap()

clear

public void clear()
Clear the state of this ModelAndView object. The object will be empty afterwards.

Can be used to suppress rendering of a given ModelAndView object in the postHandle method of a HandlerInterceptor.

See Also:
isEmpty(), HandlerInterceptor.postHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.web.servlet.ModelAndView)

isEmpty

public boolean isEmpty()
Return whether this ModelAndView object is empty, i.e. whether it does not hold any view and does not contain a model.


wasCleared

public boolean wasCleared()
Return whether this ModelAndView object is empty as a result of a call to clear() i.e. whether it does not hold any view and does not contain a model.

Returns false if any additional state was added to the instance after the call to clear().

See Also:
clear()

toString

public String toString()
Return diagnostic information about this model and view.

Overrides:
toString in class Object