2010-05-25 28 views
28

¿Cuáles son los beneficios de utilizar ModelMap en lugar de un simple mapa en Spring MVC. Veo en la implementación del código que ponen el tipo de datos del atributo agregado en el mapa como clave para estar disponible en el formulario.Uso de ModelMap en Spring

¿Alguien puede explicarlo con un ejemplo.

Respuesta

44

ModelMap subclases LinkedHashMap, y proporciona algunas ventajas adicionales para que sea un poco más fácil de utilizar por los controladores

  • addAttribute se puede llamar con sólo un valor, y la clave del mapa a continuación, se infiere a partir del tipo.
  • Todos los métodos addAttribute devuelven el ModelMap, por lo que puede unir el método de cadena, p. Ej. modelMap.addAttribute('x', x).addAttribute('y',y)
  • Los addAttribute métodos comprueba que los valores no son nulos
  • El tipo genérico de ModelMap se fija en Map<String, Object>, que es el único que tiene sentido para un modelo de vista.

Por lo tanto, nada desgarrador, pero lo suficiente como para que sea un poco más agradable que un Map crudo. Spring te permitirá usar cualquiera de los dos.

También puede utilizar la interfaz Model, que proporciona nada más que los métodos addAttribute, y se implementa mediante la clase ExtendedModelMap, que a su vez agrega otras comodidades.

+1

Muy buena descripción. Quiero saber la diferencia entre los métodos 'ModelMap.put' y' ModelMap.addAttribute'. Sé que el método put está disponible porque extiende el LinkedHashMap. ¿Hay alguna diferencia en el rendimiento para usar cualquiera de los métodos? Gracias por adelantado. –

+0

Quiero señalar que esta respuesta muestra palabra por palabra en la publicación de otro sitio web con fecha de abril de 2016: http://crunchify.com/spring-mvc-how-to-access-modelmap-values-in -a-jsp / – ndurante

2

ModelMap.addAttribute hará cheque NULO, ModelMap.put se heredan de LinkedHashMap

0

ModalMap extiende LinkedHashMap

aplicación de la hoja para su uso en la construcción de los datos del modelo para su uso con herramientas de interfaz de usuario. Admite llamadas encadenadas y la generación de nombres de atributos de modelos.

Esta clase sirve como modelo de titular genérico tanto para Servlet como para Portlet MVC, pero no está vinculada a ninguna de ellas. Consulte la interfaz del modelo para una variante de interfaz basada en Java-5 que cumple la misma función.

Cuestiones relacionadas