我在MVC Controller
课程中创建了两个测试方法。在第一种方法中,Model
作为参数传递,而在第二种方法中,我直接实例化它。在这两种方法中,我向Model
实例添加了一个属性:
@RequestMapping("/test-modelParam")
public String testMethod1(Model model) {
model.addAttribute("testname", "testvalue");
return "/testview";
}
@RequestMapping("/test-modelInstantiatedExplicitly")
public ModelAndView testMethod2() {
ModelAndView mav = new ModelAndView("/testview");
mav.addObject("testname", "testvalue");
return mav;
}
在两种情况下都会正确填充视图。
这两种方法有什么区别吗?如果是这样,哪一个优先使用另一个?
答案 0 :(得分:5)
最终没有任何区别,一切最终会在ModelAndView
中结束。
使用Model
或ModelMap
作为方法参数时,会预先填充一些值
@ModelAttribute
注释方法的结果@SessionAttribute
简而言之,它是可用于该方法的预先填充的模型。
Model
始终是创建的,并与您使用ModelAndView
添加/创建的人合并。