Model, ModelMap und ModelAndView in Spring MVC

1. Übersicht

In diesem Artikel werden wir uns die Verwendung der von Spring MVC bereitgestellten Kernfunktionen org.springframework.ui.Model , org.springframework.ui.ModelMap und org.springframework.web.servlet.ModelAndView ansehen .

2. Maven-Abhängigkeiten

Beginnen wir mit der Abhängigkeit vom Frühlingskontext in unserer Datei pom.xml :

 org.springframework spring-context 5.2.2.RELEASE 

Die neueste Version der Spring-Context-Abhängigkeit finden Sie hier.

Für ModelAndView ist die Spring-Web- Abhängigkeit erforderlich:

 org.springframework spring-web 5.2.2.RELEASE 

Die neuesten Versionen der Spring-Web-Abhängigkeit finden Sie hier.

Und wenn wir Thymeleaf als unsere Ansicht verwenden, sollten wir diese Abhängigkeit zu pom.xml hinzufügen:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Die neueste Version der Thymeleaf-Abhängigkeit finden Sie hier.

3. Modell

Beginnen wir hier mit dem grundlegendsten Konzept - dem Modell .

Einfach ausgedrückt kann das Modell Attribute bereitstellen, die zum Rendern von Ansichten verwendet werden.

Um eine Ansicht mit verwendbaren Daten zu liefern, fügen wir einfach diese Daten zu seinem Modell - Objekt. Darüber hinaus können Karten mit Attributen mit Modellinstanzen zusammengeführt werden:

@GetMapping("/showViewPage") public String passParametersWithModel(Model model) { Map map = new HashMap(); map.put("spring", "mvc"); model.addAttribute("message", "Baeldung"); model.mergeAttributes(map); return "viewPage"; }

4. ModelMap

Genau wie die obige Model- Oberfläche wird ModelMap auch zum Übergeben von Werten zum Rendern einer Ansicht verwendet.

Der Vorteil von ModelMap besteht darin, dass wir eine Sammlung von Werten übergeben und diese Werte so behandeln können, als wären sie in einer Karte enthalten :

@GetMapping("/printViewPage") public String passParametersWithModelMap(ModelMap map) { map.addAttribute("welcomeMessage", "welcome"); map.addAttribute("message", "Baeldung"); return "viewPage"; }

5. ModelAndView

Die letzte Schnittstelle zum Übergeben von Werten an eine Ansicht ist ModelAndView .

Über diese Schnittstelle können wir alle von Spring MVC benötigten Informationen in einer Rückgabe übergeben:

@GetMapping("/goToViewPage") public ModelAndView passParametersWithModelAndView() { ModelAndView modelAndView = new ModelAndView("viewPage"); modelAndView.addObject("message", "Baeldung"); return modelAndView; } 

6. Die Ansicht

Alle Daten, die wir in diese Modelle einfügen, werden von einer Ansicht verwendet - im Allgemeinen einer Vorlagenansicht zum Rendern der Webseite.

Wenn wir eine Thymeleaf-Vorlagendatei haben, auf die die Methoden unseres Controllers als Ansicht abzielen. Auf einen Parameter, der durch das Modell übergeben wird, kann über den HTML-Code von thymeleaf zugegriffen werden:

   Title Web Application. Passed parameter : th:text="${message}" 

Der hier übergebene Parameter wird über die Syntax $ {message} verwendet , die als Platzhalter bezeichnet wird. Die Thymeleaf-Vorlagen-Engine ersetzt diesen Platzhalter durch einen tatsächlichen Wert aus einem Attribut mit demselben Namen, das durch das Modell übergeben wird.

7. Fazit

In diesem kurzen Tutorial haben wir drei Kernkonzepte in Spring MVC erläutert - das Modell , die ModelMap und das ModelAndView . Wir haben uns auch Beispiele angesehen, wie die Ansicht diese Werte nutzen kann.

Wie immer finden Sie die Implementierung all dieser Beispiele und Codefragmente auf Github.