2014-09-23 6 views
7

Ich möchte den Unterschied zwischen ModelAndView und String wissen.Was ist der Unterschied zwischen Return ModelAndView und Return String in Spring MVC?

@RequestMapping(value="/") 
    public ModelAndView mainPage() { 
     return new ModelAndView("home"); 
} 

und das zweite Stück Code ist über die Rückkehr String:

@RequestMapping(value="/") 
    public String mainPage() { 
     return "home"; 
} 
+1

http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/mvc.html#mvc-ann-return-types –

+0

Sie können sich auch auf die folgende Antwort beziehen: http://stackoverflow.com/questions/7175509/which-is-better-return-modelandview-or-string-on-spring3-controller –

Antwort

9

Sie viele Dinge von einem Controller zurückgeben kann, und Spring versucht automatisch zu folgern, was von dort zu tun.

Wenn Sie eine ModelAndView zurückgeben, werden alle Informationen, die vom Controller übergeben werden müssen, darin eingebettet. Keine Überraschung dort.

Wenn Sie eine Zeichenfolge zurückgeben, wird davon ausgegangen, dass dies der Name der zu verwendenden Ansicht ist. Sie wird in ein ModelAndView-Objekt mit der Zeichenfolge als Ansicht und dem vorhandenen Modell eingebettet.

Spring macht eine Menge "Magie" auf den Rückgabetypen, aber auch auf den Parametertypen. Auf diese Weise können Sie Code in einem Stil schreiben, die mehr intuitiv für Sie, dh die beiden folgenden Beispiele sind die gleichen:

@RequestMapping(value="/") 
public ModelAndView mainPage() { 
    Model m = new Model(); 
    m.put("key", "value"); 
    return new ModelAndView(m,"main"); 
} 

und

@RequestMapping(value="/") 
public String mainPage(Model m) { 
    m.put("key", "value"); 
    return "main"; 
} 

Diese zweite Variante ist ein wenig weniger ausführlich und einfacher separat zu testen. Das übergebene Modell ist ein leeres Modell (sofern es nicht von einem anderen Controller weitergeleitet wird).

Verwandte Themen