multiple - spring mvc español
¿Cuáles son las diferencias entre Model, ModelMap y ModelAndView? (3)
Model
es una interfaz, mientras que ModelMap
es una clase.
ModelAndView
es solo un contenedor para un ModelMap
y un objeto de vista. Permite que un controlador devuelva ambos como un solo valor.
¿Cuáles son las principales diferencias entre las siguientes clases de Spring Framework ?
Model
-
ModelMap
-
ModelAndView
Usando Model.put(String,Object)
podemos acceder a los valores en archivos ModelMap.addAttribute(String,Object)
, pero ModelMap.addAttribute(String,Object)
también hizo lo mismo. No entiendo la diferencia entre estas clases.
Diferencias entre Model, ModelMap y ModelAndView
Modelo: es una interfaz. Define un titular para los atributos del modelo y diseñado principalmente para agregar atributos al modelo.
Ejemplo:
@RequestMapping(method = RequestMethod.GET)
public String printHello(Model model) {
model.addAttribute("message", "Hello World!!");
return "hello";
}
ModelMap: Implementación de Map para su uso al compilar datos de modelos para su uso con herramientas UI. Soporta llamadas encadenadas y generación de nombres de atributos de modelos.
Ejemplo:
@RequestMapping("/helloworld")
public String hello(ModelMap map) {
String helloWorldMessage = "Hello world!";
String welcomeMessage = "Welcome!";
map.addAttribute("helloMessage", helloWorldMessage);
map.addAttribute("welcomeMessage", welcomeMessage);
return "hello";
}
ModelAndView: esta clase simplemente contiene ambos para que un controlador pueda devolver el modelo y la vista en un único valor de retorno.
Ejemplo:
@RequestMapping("/welcome")
public ModelAndView helloWorld() {
String message = "Hello World!";
return new ModelAndView("welcome", "message", message);
}
Modelo : es una interfaz que contiene cuatro métodos addAttribute y one merAttribute.
ModelMap : implementa la interfaz de Mapa. También contiene el método Map.
ModelAndView : como explicó Bart, permite que un controlador devuelva ambos como un único valor.