Model, ModelMap e ModelAndView in Spring MVC

1. Panoramica

In questo articolo, esamineremo l'utilizzo dei core org.springframework.ui.Model , org.springframework.ui.ModelMap e org.springframework.web.servlet.ModelAndView forniti da Spring MVC.

2. Dipendenze di Maven

Cominciamo con la dipendenza dal contesto della primavera nel nostro file pom.xml :

 org.springframework spring-context 5.2.2.RELEASE 

L'ultima versione della dipendenza dal contesto primaverile può essere trovata qui.

Per ModelAndView , è richiesta la dipendenza spring-web :

 org.springframework spring-web 5.2.2.RELEASE 

Le ultime versioni della dipendenza spring-web possono essere trovate qui.

E, se usiamo Thymeleaf come nostro punto di vista, dovremmo aggiungere questa dipendenza a pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

L'ultima versione della dipendenza Thymeleaf può essere trovata qui.

3. Modello

Cominciamo con il concetto più basilare qui: il Modello .

In poche parole, il modello può fornire attributi utilizzati per il rendering delle viste.

Per fornire una vista con dati utilizzabili, aggiungiamo semplicemente questi dati al suo oggetto Model . Inoltre, le mappe con attributi possono essere unite con istanze del modello :

@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

Proprio come l' interfaccia Model sopra, ModelMap viene utilizzata anche per passare valori per il rendering di una vista.

Il vantaggio di ModelMap è che ci dà la possibilità di passare una raccolta di valori e trattare questi valori come se fossero all'interno di una mappa :

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

5. ModelAndView

L'interfaccia finale per passare i valori a una visualizzazione è ModelAndView .

Questa interfaccia ci consente di trasmettere tutte le informazioni richieste da Spring MVC in un unico ritorno:

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

6. La vista

Tutti i dati, che inseriamo all'interno di questi modelli, vengono utilizzati da una visualizzazione, in generale una visualizzazione basata su modelli per il rendering della pagina Web.

Se abbiamo un file modello Thymeleaf come destinazione dai metodi del nostro controller come vista. Un parametro passato attraverso il modello sarà accessibile dall'interno del codice HTML timeleaf:

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

Il parametro passato qui viene utilizzato tramite la sintassi $ {messaggio} , nota come segnaposto. Il motore del modello Thymeleaf sostituirà questo segnaposto con un valore effettivo da un attributo con lo stesso nome passato attraverso il modello.

7. Conclusione

In questo breve tutorial, abbiamo discusso tre concetti fondamentali in Spring MVC: il modello , il ModelMap e il ModelAndView . Abbiamo anche esaminato esempi di come la vista può utilizzare questi valori.

Come sempre, l'implementazione di tutti questi esempi e frammenti di codice può essere trovata su Github.