2

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

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

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

4

3 回答 3

2

ModelAndView,包含模型和视图的名称。简而言之,ModelMap 仅包含有关模型的信息。

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

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

于 2012-04-11T09:19:48.470 回答
0

Spring docs:“在正常情况下,ModelAndView 实例由视图名称和模型 Map 组成,其中包含 bean 名称和相应的对象(如命令或表单,包含参考数据)。” - 如果您必须从表单中收集条目、显示某些东西(dao 对象)等,它可以将对象传输到视图(或返回)。

---- 示例 ModelAndView 模型 = new ModelAndView(); 模型.addObject(路径);
model.addObject("user",user);
model.addObject("问候",service.getMessage());

返回模型;

// ViewName, User Bean, MSG Bean

// 春季文档

公共接口控制器{

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

}

于 2012-04-11T14:15:05.967 回答
0

ModelAndView 是 Web MVC 框架中模型和视图的持有者。请注意,这些是完全不同的。此类仅包含两者以使控制器可以在单个返回值中返回模型和视图。

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

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

于 2012-04-11T14:57:50.623 回答