Model, ModelMap y ModelAndView en Spring MVC

1. Información general

En este artículo, veremos el uso del núcleo org.springframework.ui.Model , org.springframework.ui.ModelMap y org.springframework.web.servlet.ModelAndView proporcionado por Spring MVC.

2. Dependencias de Maven

Comencemos con la dependencia del contexto de primavera en nuestro archivo pom.xml :

 org.springframework spring-context 5.2.2.RELEASE 

La última versión de la dependencia de contexto de primavera se puede encontrar aquí.

Para ModelAndView , se requiere la dependencia spring-web :

 org.springframework spring-web 5.2.2.RELEASE 

Las últimas versiones de la dependencia spring-web se pueden encontrar aquí.

Y, si usamos Thymeleaf como nuestra vista, deberíamos agregar esta dependencia a pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

La última versión de la dependencia de Thymeleaf se puede encontrar aquí.

3. Modelo

Comencemos con el concepto más básico aquí: el modelo .

En pocas palabras, el modelo puede proporcionar atributos utilizados para representar vistas.

Para proporcionar una vista con datos utilizables, simplemente agregamos estos datos a su objeto Modelo . Además, los mapas con atributos se pueden fusionar con instancias de modelo :

@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

Al igual que la interfaz Model anterior, ModelMap también se usa para pasar valores para representar una vista.

La ventaja de ModelMap es que nos brinda la capacidad de pasar una colección de valores y tratar estos valores como si estuvieran dentro de un mapa :

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

5. ModelAndView

La interfaz final para pasar valores a una vista es ModelAndView .

Esta interfaz nos permite pasar toda la información requerida por Spring MVC en una sola devolución:

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

6. La vista

Todos los datos que colocamos dentro de estos modelos son utilizados por una vista; en general, una vista con plantilla para representar la página web.

Si tenemos un archivo de plantilla Thymeleaf dirigido por los métodos de nuestro controlador como su vista. Se podrá acceder a un parámetro pasado a través del modelo desde el código HTML de thymeleaf:

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

El parámetro pasado aquí se usa a través de la sintaxis $ {mensaje} , que se conoce como marcador de posición. El motor de plantillas Thymeleaf reemplazará este marcador de posición con un valor real de un atributo del mismo nombre pasado a través del modelo.

7. Conclusión

En este tutorial rápido, hemos discutido tres conceptos centrales en Spring MVC: el Modelo , el ModelMap y el ModelAndView . También echamos un vistazo a ejemplos de cómo la vista puede hacer uso de estos valores.

Como siempre, la implementación de todos estos ejemplos y fragmentos de código se puede encontrar en Github.