Spring MVC:将模型作为参数传递给控制器方法VS显式实例化它
问题内容:
我在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;
}
在两种情况下,视图均正确填充。
两种方法之间有什么区别吗?如果是这样,在哪一种情况下最好在另一种情况下使用?
问题答案:
最终,一切都将最终变成ModelAndView
最终。
使用Model
或ModelMap
作为方法参数时,它将预先填充一些值
- 路径变量
- 任何带
@ModelAttribute
注释的方法的结果 @SessionAttribute
控制器可用的任何
简而言之,它是可用于该方法的预填充模型。
将Model
始终创建并合并添加/用创建一个ModelAndView
。