【发布时间】:2013-08-31 10:52:54
【问题描述】:
以下Spring Framework 类之间的主要区别是什么?
ModelModelMapModelAndView
使用Model.put(String,Object) 我们可以访问.jsp 文件中的值,但ModelMap.addAttribute(String,Object) 也做了同样的事情。我不明白这些类之间的区别。
【问题讨论】:
标签: spring spring-mvc
以下Spring Framework 类之间的主要区别是什么?
ModelModelMapModelAndView使用Model.put(String,Object) 我们可以访问.jsp 文件中的值,但ModelMap.addAttribute(String,Object) 也做了同样的事情。我不明白这些类之间的区别。
【问题讨论】:
标签: spring spring-mvc
Model 是一个接口,而ModelMap 是一个类。
ModelAndView 只是ModelMap 和视图对象的容器。它允许控制器将两者都作为单个值返回。
【讨论】:
Model、ModelMap 和 ModelAndView 的区别
模型:它是一个接口。它定义了模型属性的持有者,主要用于向模型添加属性。
例子:
@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);
}
【讨论】:
Model和ModelMap之间的区别...两个例子都是一样的。
Model:是一个接口,它包含四个addAttribute和一个merAttribute方法。
ModelMap:实现Map接口。它还包含 Map 方法。
ModelAndView:正如 Bart 解释的那样,它允许控制器将两者都作为单个值返回。
【讨论】: