我想知道ModelAndView和String之间的区别.
@RequestMapping(value="/")
public ModelAndView mainPage() {
return new ModelAndView("home");
}
Run Code Online (Sandbox Code Playgroud)
第二段代码是关于返回String:
@RequestMapping(value="/")
public String mainPage() {
return "home";
}
Run Code Online (Sandbox Code Playgroud)
Nie*_*sen 18
你可以从控制器返回很多东西,Spring会自动尝试从那里推断出要做什么.
当您返回ModelAndView时,需要从控制器传递的所有信息都嵌入其中.那里没有惊喜.
如果返回String,则会假定这是要使用的视图的名称.它将它包装在一个ModelAndView对象中,字符串作为视图,嵌入的现有模型也是如此.
Spring在返回类型上做了很多"魔术",但也在参数类型上做了很多.这允许您以更直观的样式编写代码,即以下两个示例相同:
@RequestMapping(value="/")
public ModelAndView mainPage() {
Model m = new Model();
m.put("key", "value");
return new ModelAndView(m,"main");
}
Run Code Online (Sandbox Code Playgroud)
和
@RequestMapping(value="/")
public String mainPage(Model m) {
m.put("key", "value");
return "main";
}
Run Code Online (Sandbox Code Playgroud)
第二个变体略微冗长,更容易单独测试.传入的模型将是一个空模型(除非从其他控制器转发).
归档时间: |
|
查看次数: |
14622 次 |
最近记录: |