Model, ModelMap et ModelAndView dans Spring MVC

1. Vue d'ensemble

Dans cet article, nous examinerons l'utilisation du noyau org.springframework.ui.Model , org.springframework.ui.ModelMap et org.springframework.web.servlet.ModelAndView fourni par Spring MVC.

2. Dépendances de Maven

Commençons par la dépendance spring-context dans notre fichier pom.xml :

 org.springframework spring-context 5.2.2.RELEASE 

La dernière version de la dépendance spring-context peut être trouvée ici.

Pour ModelAndView , la dépendance spring-web est requise:

 org.springframework spring-web 5.2.2.RELEASE 

Les dernières versions de la dépendance spring-web peuvent être trouvées ici.

Et, si nous utilisons Thymeleaf comme vue, nous devrions ajouter cette dépendance à pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

La dernière version de la dépendance Thymeleaf peut être trouvée ici.

3. Modèle

Commençons par le concept le plus basique ici - le modèle .

En termes simples, le modèle peut fournir des attributs utilisés pour le rendu des vues.

Pour fournir une vue avec des données utilisables, nous ajoutons simplement ces données à son objet Model . De plus, les cartes avec des attributs peuvent être fusionnées avec des instances de modèle :

@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

Tout comme l' interface Model ci-dessus, ModelMap est également utilisé pour transmettre des valeurs pour rendre une vue.

L'avantage de ModelMap est qu'il nous donne la possibilité de transmettre une collection de valeurs et de traiter ces valeurs comme si elles se trouvaient dans une carte :

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

5. ModelAndView

La dernière interface pour transmettre des valeurs à une vue est ModelAndView .

Cette interface nous permet de transmettre toutes les informations requises par Spring MVC en un seul retour:

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

6. La vue

Toutes les données que nous plaçons dans ces modèles sont utilisées par une vue - en général, une vue basée sur un modèle pour rendre la page Web.

Si nous avons un fichier modèle Thymeleaf ciblé par les méthodes de notre contrôleur comme vue. Un paramètre passé à travers le modèle sera accessible depuis le code HTML thymeleaf:

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

Le paramètre passé ici est utilisé via la syntaxe $ {message} , connue sous le nom d'espace réservé. Le moteur de modèle Thymeleaf remplacera cet espace réservé par une valeur réelle d'un attribut du même nom transmis par le modèle.

7. Conclusion

Dans ce didacticiel rapide, nous avons discuté de trois concepts de base dans Spring MVC: le modèle , le ModelMap et le ModelAndView . Nous avons également examiné des exemples de la manière dont la vue peut utiliser ces valeurs.

Comme toujours, la mise en œuvre de tous ces exemples et extraits de code peut être trouvée sur Github.