欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ModelAndView

程序员文章站 2022-03-05 08:09:41
...

ModelAndView

使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。 

 

具体作用:

1. 返回指定页面

通过setViewName()方法跳转到指定的页面。

ModelAndView model = new ModelAndView();
//‎ 设置此 ModelAndView 的视图名称, 由 DispatcherServlet 通过 ViewResolver 解析‎
model.setViewName("hello");

ModelAndView默认转发,可以设置重定向到指定的页面。

return new ModelAndView("redirect:/index.html");

 

2. 返回参数到指定页面的request作用域中

使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字,参数会返回到新页面的request作用域中

    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("index");
    // 通过key/value的方式绑定数据
    modelAndView.addObject("message", "Hello World");
    return modelAndView;

 

3. 构造方法

可以直接通过带有参数的构造方法 ModelAndView(String viewName, String attributeName, Object attributeValue) 来返回数据与转发的视图名。

return new ModelAndView("index", "message", "Hello World");

 

ModelMap

Spring也提供了ModelMap,这是java.util.Map实现,可以根据模型属性的具体类型自动生成模型属性的名称。 它的作用类似request对象的setAttribute方法。

ModelMap model = new ModelMap();  
if(courtName != null){  
    model.addAttribute("courtName",courtName);  
    model.addAttribute("reservations",reservationService.query(courtName));  
}  
return new ModelAndView("reservationQuery",model);  

 

相关标签: 经验总结