前言
在 springMVC
请求处理方法返回的参数类型中,最重要就是 Model
和 ModelAndView
了。使用 Model
和 ModelAndView
这两者之间有着很大的区别
Model
只是用来传输数据的,并不会进行业务的寻址ModelAndView
却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp
的文件
Model
Model
是一个接口,实现类为 ExtendedModelMap
和 ModelMap
。Model
本身不能设置页面跳转的 url
地址别名或者物理跳转地址,我们可以通过控制器方法的返回值 renturn
来设置跳转 url
,Model
是用 addAttribute()
方法设置返回的值的
Model
源码
public interface Model {
Model addAttribute(String var1, @Nullable Object var2);
Model addAttribute(Object var1);
Model addAllAttributes(Collection<?> var1);
Model addAllAttributes(Map<String, ?> var1);
Model mergeAttributes(Map<String, ?> var1);
boolean containsAttribute(String var1);
Map<String, Object> asMap();
}
public class ExtendedModelMap extends ModelMap implements Model {
// ......
}
使用示例
Controller
控制器层
@RequestMapping(path = "/home", method = RequestMethod.GET)
public String index(@NotNull Model model) {
/* ------------置顶数据查询(只展示 4 条数据)------------*/
PagingParameterPostVO topping = new PagingParameterPostVO();
topping.setPageNum(0);
topping.setPageSize(pagingProperties.getTopPageNum());
List<PostVO> postVOS = postService.selectPostVOTop(topping);
model.addAttribute("postVOS", postVOS);
return "index";
}
页面渲染
<ul class="fly-list">
<!-- thymeleaf模板引擎:使用 th:each 遍历 -->
<li th:each