2016-04-01 5 views
0

Was ist der Unterschied zwischen diesen beiden Arten von @RequestMapping? (Im Allgemeinen, ausgenommen die Parameter, die an die Seiten- und Mapping-Seiten übergeben werden), ist der richtige Weg, das Modell oder die Seite zurückzugeben?Feder mvc Controller Zuordnung verschiedener Möglichkeiten

@RequestMapping("/") 
    public String index(Model model) { 
     model.addAttribute("categories", myService.listGroups()); 
     return "index"; 
    } 

@RequestMapping(value = {"/", "/helloworld**"}, method = {RequestMethod.GET}) 
    public ModelAndView welcomePage() { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("title", "Spring Security Tutorial"); 
     model.addObject("message", "Welcome Page !"); 
     model.setViewName("helloworld"); 
     return model; 
    } 
+0

Neben URL, die erste für POST funktioniert, PUT usw., ist der zweite nur –

Antwort

1

Der Unterschied ist hauptsächlich syntaktisch. Beachten Sie außerdem, dass in der Regel als Methodenparameter deklariert wird, anstatt sie zu instanziieren.

Model als param + String Ansicht Rückgabewert Profis:

  • einfacher einzustellen Modellattribute (weniger Gesetz von Demeter Verletzungen, wenn Sie sich interessieren)
  • einfacher, den Blick Wert zurückzukehren (einfach einen String zurückgeben)

ModelAndView als Rückgabewert & param Vorteile:

  • kapselt diese beiden in einem einzigen Objekt, mit dem Sie Ihre Methoden besser in einigen Situationen komponieren lassen kann (wahrscheinlich Methoden Ketten Handler?)
  • ermöglicht eine nicht-String Ansicht zurückkehren, wie die RedirectView (die zB , im Vergleich zu String-Ansicht ermöglicht es Ihnen, die genauen 3 ** HTTP-Antwort-Status ohne sie zu berühren oder sogar erklärt den HTTP-Servlet Response-Parameter einstellen: Set HTTP status code for redirect when returning a String in a Spring 3 controller)

Siehe auch:

+0

Vielen Dank für Hilfe bekommen – user202822