是否有可能使用不同的视图parsing器?

我有一个Springconfiguration中的多个视图parsing器,并希望对不同的请求使用不同的视图parsing器。

例如:对于以report_*开头的URL,使用Birt视图parsing器,对于Ajax调用使用Tilesparsing器等等。

尝试设置顺序属性,但所有的意见由tilesViewResolver解决。

 <beans:bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> <beans:property name="viewClass" value="com.example.example.util.AjaxTiles21View"/> </beans:bean> <beans:bean id="birtViewResolver" class="org.eclipse.birt.spring.core.BirtViewResolver"> ... <beans:property name="order" value="2" /> </beans:bean> <beans:bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"> <beans:property name="order" value="1" /> </beans:bean> 

One Solution collect form web for “是否有可能使用不同的视图parsing器?”

你绝对可以。 ViewResolver有一个方法, resolveViewName(String)返回

View对象; 如果没有find ,则返回null (可选,以允许ViewResolver链接)

您的ViewResolver bean已注册。 当处理程序返回视图名称时,Spring将遍历每个ViewResolver ,并使用给定的名称调用它们的resolveViewName方法。 如果该方法返回非-null ,则使用该View 。 如果返回null ,则继续迭代。

所以如果Spring跳过它,那么实现必须返回null

有一些从不返回null 。 这似乎是您的自定义ViewResolver类的情况。 如果ViewResolver返回一个View ,即使这个View最终会失败,Spring也会使用它。

您需要修复这个问题,或者订购ViewResolver bean。 例如,您可以使用Ordered界面对它们进行Ordered 。 让你的类实现这个接口并返回一个合适的值。

  • 如何使用 ? :如果语句带有Razor和内联代码块
  • 在安装ASP.NET MVC 4 Beta之后引发InvalidCastException
  • SignalR - 使用(IUserIdProvider)向特定用户发送消息* NEW 2.0.0 *
  • EnableWebMvc注释的含义
  • 如何从View(aspx页面)中访问ModelState?
  • 使用Razor View Engine从ASP.NET MVC 3的局部视图中将内容注入特定的部分
  • 在Spring MVC应用程序中实现Swagger的“简单”方法
  • ASP.NET MVC - 设置自定义IIdentity或IPrincipal
  • 连接到Visual Studio通过局域网debuggingIIS Express服务器
  • Spring 3 MVC资源和标签<mvc:resources />
  • 多个Spring @RequestMapping注释