Spring MVC 中返回 ModelAndView 和返回 String 有啥区别?
Posted
技术标签:
【中文标题】Spring MVC 中返回 ModelAndView 和返回 String 有啥区别?【英文标题】:What is the difference between return ModelAndView and return String in Spring MVC?Spring MVC 中返回 ModelAndView 和返回 String 有什么区别? 【发布时间】:2014-09-23 06:37:09 【问题描述】:我想知道ModelAndView和String的区别。
@RequestMapping(value="/")
public ModelAndView mainPage()
return new ModelAndView("home");
第二段代码是关于返回字符串的:
@RequestMapping(value="/")
public String mainPage()
return "home";
【问题讨论】:
docs.spring.io/spring/docs/4.1.x/spring-framework-reference/… 你也可以参考下面的答案:***.com/questions/7175509/… 【参考方案1】:你可以从一个控制器返回很多东西,Spring 会自动尝试从那里推断出要做什么。
当您返回 ModelAndView 时,需要从控制器传递的所有信息都嵌入其中。没有惊喜。
如果您返回一个字符串,它将假定这是要使用的视图的名称。它将把它包装在一个 ModelAndView 对象中,字符串作为视图,同时嵌入现有的模型。
Spring 在返回类型和参数类型上做了很多“魔法”。 这使您可以以更直观的方式编写代码,即以下两个示例相同:
@RequestMapping(value="/")
public ModelAndView mainPage()
Model m = new Model();
m.put("key", "value");
return new ModelAndView(m,"main");
和
@RequestMapping(value="/")
public String mainPage(Model m)
m.put("key", "value");
return "main";
第二个变体不太冗长,更容易单独测试。传入的模型将是一个空模型(除非从其他控制器转发)。
【讨论】:
以上是关于Spring MVC 中返回 ModelAndView 和返回 String 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC 中返回 ModelAndView 和返回 String 有啥区别?
Spring MVC:如何在@ResponseBody 中返回图像?