Model,ModelMap和ModelAndView有什么区别?

Bas*_*raj 64 spring spring-mvc

以下Spring Framework类之间的主要区别是什么?

  • Model
  • ModelMap
  • ModelAndView

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

Bar*_*art 68

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

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

  • 在挖掘之后,我发现使用ModelMap的最佳原因(在vikas harle的答案中埋没并且未在示例中显示)是在向ModelMap添加属性时,可以省略属性名称(键)和spring will根据属性值生成属性键.https://docs.spring.io/spring/docs/4.3.14.RELEASE/spring-framework-reference/htmlsingle/#mvc-coc-modelmap (2认同)

Vik*_*rle 25

Model,ModelMap和ModelAndView之间的差异

型号:它是一个接口.它定义了模型属性的持有者,主要用于向模型添加属性.

例:

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

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

例:

@RequestMapping("/helloworld")
public String hello(ModelMap map) {
    String helloWorldMessage = "Hello world!";
    String welcomeMessage = "Welcome!";
    map.addAttribute("helloMessage", helloWorldMessage);
    map.addAttribute("welcomeMessage", welcomeMessage);
    return "hello";
}
Run Code Online (Sandbox Code Playgroud)

ModelAndView:这个类只是为了使控制器能够在单个返回值中返回模型和视图.

例:

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

  • 您的第二个示例没有显示“Model”和“ModelMap”之间的区别...两个示例是相同的。 (4认同)

Ash*_*shu 10

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

ModelMap:实现Map接口.它还包含Map方法.

ModelAndView:正如Bart解释的那样,它允许控制器将两者作为单个值返回.