What are the differences between Model, ModelMap, and ModelAndView?
Solution 1:
Model
is an interface while ModelMap
is a class.
ModelAndView
is just a container for both a ModelMap
and a view object. It allows a controller to return both as a single value.
Solution 2:
Differences between Model, ModelMap, and ModelAndView
Model: It is an Interface. It defines a holder for model attributes and primarily designed for adding attributes to the model.
Example:
@RequestMapping(method = RequestMethod.GET)
public String printHello(Model model) {
model.addAttribute("message", "Hello World!!");
return "hello";
}
ModelMap: Implementation of Map for use when building model data for use with UI tools.Supports chained calls and generation of model attribute names.
Example:
@RequestMapping("/helloworld")
public String hello(ModelMap map) {
String helloWorldMessage = "Hello world!";
String welcomeMessage = "Welcome!";
map.addAttribute("helloMessage", helloWorldMessage);
map.addAttribute("welcomeMessage", welcomeMessage);
return "hello";
}
ModelAndView: This class merely holds both to make it possible for a controller to return both model and view in a single return value.
Example:
@RequestMapping("/welcome")
public ModelAndView helloWorld() {
String message = "Hello World!";
return new ModelAndView("welcome", "message", message);
}
Solution 3:
Model: is an interface it contains four addAttribute and one merAttribute method.
ModelMap: implements Map interface. It also contains Map method.
ModelAndView: As Bart explain it allows a controller return both as a single value.