Modèle, ModelMap et Model View dans Spring MVC

Modèle, Carte modèle et Vue modèle dans Spring MVC

1. Vue d'ensemble

Dans cet article, nous allons examiner l'utilisation desorg.springframework.ui.Model,org.springframework.ui.ModelMap etorg.springframework.web.servlet.ModelView principaux fournis par Spring MVC.

2. Dépendances Maven

Commençons par la dépendancespring-context dans notre fichierpom.xml:


    org.springframework
    spring-context
    4.3.11.RELEASE

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

Pour lesModelAndView, la dépendancespring-web est requise:


    org.springframework
    spring-web
    4.3.11.RELEASE

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

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


    org.thymeleaf
    thymeleaf-spring3
    3.0.8.RELEASE

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

3. Model

Commençons par le concept le plus basique ici - lesModel.

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 objetModel. De plus, les cartes avec des attributs peuvent être fusionnées avec les instancesModel:

@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

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

L'avantage deModelMap est qu'il nous donne la possibilité de passer une collection de valeurs et de traiter ces valeurs comme si elles étaient à l'intérieur d'unMap:

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

5. ModelAndView

L'interface finale pour transmettre des valeurs à une vue est leModelAndView.

Cette interface nous permet de transmettre toutes les informations requises par Spring MVC en une seule déclaration:

@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
    ModelAndView modelAndView = new ModelAndView("viewPage");
    modelAndView.addObject("message", "example");
    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 des modèles pour restituer 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 de la 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 issue d'un attribut du même nom transmis par le modèle.

7. Conclusion

Dans ce rapide didacticiel, nous avons abordé trois concepts de base de Spring MVC: lesModel, lesModelMap et lesModelAndView. Nous avons également examiné des exemples montrant comment la vue peut utiliser ces valeurs.

Comme toujours, l'implémentation de tous ces exemples et extraits de code peut être trouvéeover on Github.