Model, ModelMap und ModelView in Spring MVC

Modell, ModelMap und Modellansicht in Spring MVC

1. Überblick

In diesem Artikel werden wir uns die Verwendung der von Spring MVC bereitgestellten Kernorg.springframework.ui.Model,org.springframework.ui.ModelMap undorg.springframework.web.servlet.ModelView ansehen.

2. Maven-Abhängigkeiten

Beginnen wir mit der Abhängigkeit vonspring-contextin unsererpom.xml-Datei:


    org.springframework
    spring-context
    4.3.11.RELEASE

Die neueste Version der Spring-Context-Abhängigkeit isthere.

Für dieModelAndView ist die Abhängigkeit vonspring-web erforderlich:


    org.springframework
    spring-web
    4.3.11.RELEASE

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

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


    org.thymeleaf
    thymeleaf-spring3
    3.0.8.RELEASE

Die neueste Version der Thymeleaf-Abhängigkeit isthere.

3. Model

Beginnen wir hier mit dem grundlegendsten Konzept - denModel.

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

Um eine Ansicht mit verwendbaren Daten bereitzustellen, fügen wir diese Daten einfach dem ObjektModelhinzu. Darüber hinaus können Karten mit Attributen mit den Instanzen vonModelzusammengeführt werden:

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

4. ModelMap

Genau wie die obigeModel-Schnittstelle wirdModelMap auch zum Übergeben von Werten zum Rendern einer Ansicht verwendet.

Der Vorteil vonModelMap besteht darin, dass wir eine Sammlung von Werten übergeben und diese Werte so behandeln können, als ob sie innerhalb vonMap liegen:

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

5. ModelAndView

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

Diese Schnittstelle ermöglicht es uns, alle von Spring MVC benötigten Informationen in einem Schritt weiterzugeben:

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

6. Die Aussicht

Alle Daten, die wir in diesen Modellen platzieren, 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 Thymeleaf-HTML-Code 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-Vorlagenengine 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 erörtert:Model,ModelMap undModelAndView. Wir haben uns auch Beispiele angesehen, wie die Ansicht diese Werte nutzen kann.

Wie immer kann die Implementierung all dieser Beispiele und Codefragmenteover on Github gefunden werden.