在Spring MVC控制器中处理模型

时间:2012-04-11 09:14:17

标签: java spring spring-mvc

我正在尝试实现我的第一个Spring MVC控制器,遵循Spring文档,一些教程和“Spring in Action”一书。

现在我有一个疑问:实施控制器方法我发现处理模型的差异。 有时他们使用Map<String, Object>Model对象或ModelAndView对象。

使用对象或其他对象的区别是什么? 选择一个而不是另一个的原因是什么?

3 个答案:

答案 0 :(得分:2)

ModelAndView,包含模型和视图的名称。合同中的ModelMap仅包含有关模型的信息。

因此,使用模型和视图,您可以明确设置视图名称。

如果您只是设置模型并在控制器中返回一个字符串,则视图名称将从请求uri中推断出来。

答案 1 :(得分:0)

Spring docs:'在正常情况下,ModelAndView实例由视图名称和模型Map组成,它包含bean名称和相应的对象(如命令或表单,包含引用数据)。 - 如果您必须从表单中收集条目,显示某些内容(dao对象)等,它就是将对象传输到视图(或后面)的方式。

----例子 ModelAndView model = new ModelAndView();  model.addObject(路径);
 model.addObject( “用户”,用户);
 model.addObject( “问候”,service.getMessage());

返回模型;

// ViewName,User Bean,MSG Bean

// Spring doc

public interface Controller {

/**
 * Process the request and return a ModelAndView object which the DispatcherServlet
 * will render.
 */
ModelAndView handleRequest(
    HttpServletRequest request,
    HttpServletResponse response) throws Exception;

}

答案 2 :(得分:0)

ModelAndView是Web MVC框架中Model和View的持有者。请注意,这些完全不同。这个类只是为了使控制器能够在单个返回值中返回模型和视图。

它表示由处理程序返回的模型和视图,由Dispatcher解析。视图可以采用String视图名称的形式,需要由ViewResolver对象解析;

或者可以直接指定视图对象。该模型是一个Map,允许使用按名称键入的多个对象。