2010-07-27 8 views
16

Ist ModelMap nur der neue Name in Spring 3 für eine ModelAndView?Was ist der Unterschied zwischen ModelAndView und ModelMap?

Ändert sich die Funktionalität in Spring 3?

diesen Code in einer Frühling-3 App Betrachten Sie ein ModelMap mit: wissen

@RequestMapping(value = "/order", method = RequestMethod.GET) 
public final String setup(final ModelMap model) 
{ 
    model.addAttribute(ORDER, new Order()); 
    return "setup"; 
} 

Ich mag, was die entsprechende Verwendung hier von ModelAndView in einem älteren Frühling App wäre? Wäre es nur eine Namensänderung von ModelMap zu erforderlich, um dies in Frühling 2.5 zu arbeiten?

Antwort

21

ModelAndView, wie der Name schon sagt, enthält das Modell und den Namen der Ansicht. ModelMap, im Vertrag, enthält nur Informationen über das Modell.

Ihr Beispiel hätte geschrieben worden ist (in „alten“ Frühling) als

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
{ 
    return new ModelAndView("setup", ORDER, new Order()); 
} 
+0

über die neue Feder 3: Wenn ich nur ModelMap zurück, dann wie wird zurückgegeben die Ansicht? Neuling hier ... –

+1

@Abhijeet: Spring wird den View-Namen aus der Anfrage-URI ableiten. – skaffman

+0

wenn ich explizit einen View-Namen angeben möchte? Damit kann ich den gleichen Controller für verschiedene Anfragen verwenden. – coder247

8

@ coder247 Jemand korrigiert mich wenn ich falsch liege, aber Sie brauchen nicht ein ModelMap zurückzukehren. Fügen Sie Ihrer ModelMap Ihre Attribute hinzu und geben Sie einfach einen String zurück, bei dem es sich um den View-Namen handelt.

ein ausgezeichneter Artikel, dass dies erklärt, wie diese und mehr zu tun ... http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-annotation-example/

+1

+ 1 zum Hinweis ** "Sie müssen keine ModelMap zurückgeben **". –

Verwandte Themen