2010-05-25 9 views
28

Quali sono i vantaggi dell'utilizzo di ModelMap anziché di una semplice mappa in Spring MVC. Vedo nell'implementazione del codice che inserisce il tipo di dati dell'attributo aggiunto nella mappa come chiave invece che deve essere reso disponibile nel modulo.Uso ModelMap in primavera

Qualcuno può spiegare con un esempio.

risposta

44

ModelMap sottoclassi LinkedHashMap, e fornisce alcune comodità supplementari per renderlo un po 'più facile da usare dai controllori

  • addAttribute può essere chiamato con solo un valore, e la chiave della mappa viene poi dedotto dal tipo.
  • I metodi addAttribute restituiscono tutti ModelMap, quindi è possibile chiamare insieme il metodo a catena, ad es. modelMap.addAttribute('x', x).addAttribute('y',y)
  • I metodi addAttribute controlla che i valori non sono nulli
  • Il tipo generico di ModelMap è fissato a Map<String, Object>, che è l'unico che ha senso per un modello di vista.

Quindi niente sconvolgente, ma abbastanza da renderlo un po 'più bello di un raw Map. La primavera ti permetterà di usare l'una o l'altra.

È inoltre possibile utilizzare l'interfaccia Model, che non fornisce altro che i metodi addAttribute ed è implementata dalla classe ExtendedModelMap che a sua volta aggiunge ulteriori vantaggi.

+1

Descrizione molto bella. Voglio sapere la differenza tra i metodi 'ModelMap.put' e' ModelMap.addAttribute'. So che il metodo put è disponibile perché estende LinkedHashMap. Fa alcuna differenza nelle prestazioni utilizzare uno qualsiasi dei metodi. Grazie in anticipo. –

+0

Voglio sottolineare che questa risposta è mostrata parola per parola sul post di un altro sito Web datato aprile 2016: http://crunchify.com/spring-mvc-how-to-access-modelmap-values-in -a-jsp / – ndurante

2

ModelMap.addAttribute farà controllo NULL, ModelMap.put si ereditano da LinkedHashMap

0

ModalMap estende LinkedHashMap

Attuazione della mappa da utilizzare per la costruzione di dati del modello per l'uso con gli strumenti di interfaccia utente. Supporta chiamate concatenate e generazione di nomi di attributi del modello.

Questa classe funge da supporto modello generico per Servlet e MVC portlet, ma non è collegata a nessuno di questi. Controlla l'interfaccia del modello per una variante di interfaccia basata su Java-5 che abbia lo stesso scopo.