2010-07-27 20 views
16

¿Es ModelMap el nuevo nombre en Spring 3 para ModelAndView?¿Cuál es la diferencia entre ModelAndView y ModelMap?

¿La funcionalidad cambia en el resorte 3?

consideran este código en una aplicación Spring 3 utilizando un ModelMap:

@RequestMapping(value = "/order", method = RequestMethod.GET) 
public final String setup(final ModelMap model) 
{ 
    model.addAttribute(ORDER, new Order()); 
    return "setup"; 
} 

me gustaría saber cuál es el uso equivalente de aquí ModelAndView estaría en una aplicación Primavera mayor? ¿Se requiere un cambio de nombre de ModelMap a ModelAndView para que funcione en Spring 2.5?

Respuesta

21

ModelAndView, como su nombre lo indica, contiene el modelo, y el nombre de la vista. ModelMap, en contrato, solo contiene información sobre el modelo.

Su ejemplo habría sido escrito (en la primavera de "viejo") como

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
{ 
    return new ModelAndView("setup", ORDER, new Order()); 
} 
+0

Sobre el nuevo muelle 3: Si regreso única ModelMap, entonces, ¿cómo se devuelve la vista? Novato aquí ... –

+1

@Abhijeet: Spring inferirá el nombre de la vista del URI de solicitud. – skaffman

+0

si quiero especificar un nombre de vista explícitamente? Para que pueda usar el mismo controlador para diferentes solicitudes. – coder247

8

@ coder247 alguien me corrija si estoy equivocado, pero que no es necesario devolver un ModelMap. Agregue sus atributos a su ModelMap y simplemente devuelva una cadena que es el nombre de la vista.

Este es un excelente artículo que explica cómo hacer esto y más ... http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-annotation-example/

+1

+ 1 para señalar ** "no necesita devolver un ModelMap" **. –

Cuestiones relacionadas