tan*_*bee 47 java birt spring-mvc
我在Spring配置中有多个视图解析器,并希望为不同的请求使用不同的视图解析器.
示例:对于以...开头的URL report_*,使用Birt视图解析器,对于ajax调用,使用Tiles解析器等.
尝试设置订单属性,但所有视图都由解析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>
Run Code Online (Sandbox Code Playgroud)
Sot*_*lis 41
你绝对可以.ViewResolver有一个方法,resolveViewName(String)返回
View对象,如果未找到则为null(可选,允许ViewResolver链接)
你的ViewResolver豆子已经注册了.当处理程序返回视图名称时,Spring将遍历每个视图名称ViewResolver,resolveViewName并使用给定名称调用其方法.如果该方法返回non -null,View则使用该方法.如果null返回,则继续迭代.
因此,null如果Spring要跳过它,则必须返回实现.
有些实现永远不会返回null.您的自定义ViewResolver类似乎就是这种情况.如果ViewResolver返回a View,即使View最终无法呈现,Spring也会使用它.
您需要修复它或订购您的ViewResolverbean.例如,您可以使用Ordered界面订购它们.让您的类实现该接口并返回适当的值.