是否有可能使用不同的视图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> 

你绝对可以。 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 。 让你的类实现这个接口并返回一个合适的值。

Interesting Posts