ModelAndView 类别如起名称所示,代表了MVC Web程序中Model与View的对象。过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
View是rg.springframework.web.servlet.View接口的实例解析
当视图解释器解析ModelAndVIew是,其中model本生就是一个Map的实现类的子类。视图解析器将model中的每个元素都通过request.setAttribute(name, value);添加request请求域中。这样就可以在JSP页面中通过EL表达式来获取对应的值。
用法:
1. 利用setView()直接显示view特性,做前端异常提示
public ModelAndView testModelAndView() throws Exception {
ModelAndView mav = new ModelAndView();
MappingJackson2JsonView view = new MappingJackson2JsonView(); //view
Map<String, Object> attributes = new HashMap<>();
attributes.put("errMsg", e.getMessage());
view.setAttributesMap(attributes);
mav.setView(view);
mav.setStatus(HttpStatus.OK); //标明状态
return mav;
}
2. 用作视图解析器
@RequestMapping("/test")
public ModelAndView test(){
ModelAndView mav=new ModelAndView();
mav.getModel().put("name", "hello");
List<String> list = new ArrayList<String>();
list.add("java");
list.add("c++");
list.add("oracle");
mav.addObject("bookList", list);
return mav;
}
jsp页面
name:${name }
<p>书籍列表</p>
<c:forEach items="${bookList}" var="item">
<c:out value="${item}"></c:out>
</c:forEach>
<br/>