Model、 ModelMap 和 ModelAndView 之间的区别是什么?

下列 Spring 框架类之间的主要区别是什么?

  • Model
  • ModelMap
  • ModelAndView

使用 Model.put(String,Object)我们可以访问 .jsp文件中的值,但是 ModelMap.addAttribute(String,Object)也可以做同样的事情。我不明白这些课程之间的区别。

67841 次浏览

Model是一个接口,而 ModelMap是一个类。

ModelAndView只是 ModelMap和视图对象的容器。它允许控制器将两者作为单个值返回。

Model : 是一个接口,它包含四个 addAttribute 和一个 merAttribute 方法。

ModelMap : 实现了 Map 接口,它还包含了 Map 方法。

ModelAndView : 正如 Bart 解释的那样,它允许控制器以单个值的形式返回这两个值。

模型、 ModelMap 和 ModelAndView 之间的差异

Model: It is an Interface 模型: 它是一个接口。它为模型属性定义了一个容器,主要用于向模型添加属性。

例如:

@RequestMapping(method = RequestMethod.GET)
public String printHello(Model model) {
model.addAttribute("message", "Hello World!!");
return "hello";
}

ModelMap: 在构建用于 UI 工具的模型数据时使用的 Map 的实现。支持链式调用和模型属性名的生成。

例如:

@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: 这个类仅仅保存了这两个类,使得控制器可以在一个返回值中同时返回模型和视图。

例如:

@RequestMapping("/welcome")
public ModelAndView helloWorld() {
String message = "Hello World!";
return new ModelAndView("welcome", "message", message);
}