2015-01-28 24 views
6

Sto confrontando ModelMap e Model da Spring MVC. A parte la differenza ovvia che prima è una classe e la seconda un'interfaccia c'è qualche differenza che rende preferibile l'utilizzo di uno o dell'altro in diverse situazioni?ModelMap vs Model in Spring MVC

Principalmente sono utilizzati per lo stesso scopo (come da spring MVC documentazione):

java.util.Map/org.springframework.ui.Model/ org.springframework.ui.ModelMap per arricchire la modello implicito che è esposto alla vista Web.

Solo ho trovato là fuori che ModelMap si arricchisce Map, tuttavia a differenza Model è ancora chiaro.

Posso concludere da ModelMap javadoc che "Modello" è preferito per java 5?

Controllare l'interfaccia Modello per una variante di interfaccia basata su Java-5 che ha lo stesso scopo.

Tuttavia non sembra che ModelMap sarebbe deprecato o qualcosa del genere. Ma perché ModelMap non implementa Model?

+2

'ExtendedModelMap' sta estendendo' ModelMap' e attuazione 'ModelMap'. Quando si usa il 'Modello' è possibile concatenare chiamate di metodi poiché la maggior parte dei metodi restituisce' Modello' con 'Mappa' o' ModelMap', questo non è il caso. –

+0

grazie per 'ExtendedModelMap'. AFAIK puoi anche concatenare chiamate con 'ModelMap' (a differenza di' Map' che ho già notato). – sodik

+0

Ah si hai ragione. 'ModelMap' precede anche l'interfaccia' Modello'. Per quell'interfaccia ci sono fondamentalmente 2 implementazioni, 'ExtendedModelMap' e' RedirectAttributesModelMap' (esiste anche 'BindingAwareModelMap' che è un'estensione di' ExtendedModelMap').Per l'utilizzo nei metodi di mappatura delle richieste, non importa quale usare, anche se probabilmente suggerirei di usare l'interfaccia 'Modello' invece di una delle implementazioni. Ma questo è altamente opinato :). La risposta –

risposta

0

Model - Interfaccia specifica per Java-5 che definisce un supporto per gli attributi del modello. Progettato principalmente per aggiungere attributi al modello. Consente l'accesso al modello generale come java.util.Map.

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


ModelMap - classe ModelMap è fondamentalmente un LinkedHashMap. Aggiunge alcuni metodi per comodità. Proprio come l'interfaccia modello sopra, ModelMap viene anche utilizzato per passare valori per il rendering di una vista.

Il vantaggio di ModelMap è che ci dà la possibilità di passare un insieme 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"; 
} 

di riferimento;