Reputation: 1111
What are the main differences between the following Spring Framework classes?
Model
ModelMap
ModelAndView
Using Model.put(String,Object)
we can access the values in .jsp
files, but ModelMap.addAttribute(String,Object)
also did same thing. I do not understand the difference between these classes.
Upvotes: 85
Views: 73891
Reputation: 387
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);
}
Upvotes: 37
Reputation: 499
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.
Upvotes: 14
Reputation: 17361
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.
Upvotes: 83