什么是默认的Spring 3视图解析器?

got*_*ch4 7 spring-mvc

我已经阅读了关于视图解析器的Spring 3文档......但是在我的项目中我没有定义任何文件.我只是从控制器方法返回一个ModelAndView@ResponseBodyString.我猜有一个默认的视图解析器(可能UrlBasedViewResolver)已经配置好了.那是什么?我在哪里可以获得有关此文档的信息?

如果我想添加其他视图,JsonView或者XmlView(现在我使用一个呈现数据的Jsp,但是我读到我可以通过将模型对象直接传递给将为我执行此操作的特殊视图来避免这种情况)如何处理此默认值查看解析器?

ska*_*man 11

默认值是自动注册的InternalResourceViewResolver(UrlBasedViewResolver是此的抽象超类).

如果声明自己的视图解析器,则InternalResourceViewResolver不会使用默认值.如果您愿意,您可以将其重新声明为明确的bean.如果有多个视图解析器,则将按顺序查询它们,直到其中一个返回视图对象.但是,由于servlet API的工作方式,InternalResourceViewResolver 必须始终是链中的最后一个视图解析器.

如果您的控制器方法View直接返回对象,则不需要视图解析器,并且将直接呈现视图.同样,如果使用@ResponseBody,则会绕过视图解析程序.

  • @ gotch4:不,只是一个长期受苦的用户:) (8认同)
  • @skaffman,我没有在我的{servletname} -servlet.xml文件中指定任何视图解析器,假设默认为"InternalResourceViewResolver".但是我收到错误`在DispatcherServlet中找不到带有URI [/ LMS-MVC/userList]的HTTP请求的映射,名称为'lms'.现在如果我手动配置这个视图解析器,它就可以了.你能解释一下这种行为吗? (2认同)
  • 令人惊讶的,令人惊叹的用户:"同样,如果您使用@ResponseBody,则会绕过视图解析器." (2认同)