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);
推荐阅读