【问题标题】: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";
}

【问题讨论】:

标签: spring


【解决方案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";
}

第二个变体不太冗长,更容易单独测试。传入的模型将是一个空模型(除非从其他控制器转发)。

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2015-04-26
    • 2011-12-24
    • 2011-09-29
    • 1970-01-01
    • 2021-08-20
    • 2015-10-31
    • 2012-03-22
    相关资源
    最近更新 更多