Java 是否可以使用不同的视图解析程序?

Java 是否可以使用不同的视图解析程序?,java,spring-mvc,birt,Java,Spring Mvc,Birt,我在Spring配置中有多个视图解析器,并且希望对不同的请求使用不同的视图解析器 例如:对于以report.*开头的URL,使用Birt视图解析器,对于ajax调用,使用Tiles解析器等等 已尝试设置order属性,但所有视图都由TileViewResolver解析 <beans:bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> <bean

我在Spring配置中有多个视图解析器,并且希望对不同的请求使用不同的视图解析器

例如:对于以
report.*
开头的URL,使用Birt视图解析器,对于ajax调用,使用Tiles解析器等等

已尝试设置order属性,但所有视图都由
TileViewResolver
解析

<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
有一个方法,返回

视图对象,如果找不到,则为null(可选,以允许ViewResolver链接)

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

因此,如果Spring要跳过它,那么实现必须返回
null

有些实现永远不会返回
null
。您的自定义
viewsolver
类似乎就是这样。如果
视图解析器
返回一个
视图
,即使该
视图最终无法呈现,Spring也会使用它


您要么需要修复该问题,要么订购
viewsolver
bean。例如,您可以使用
Ordered
界面对其进行订购。让您的类实现该接口并返回适当的值。

您如何在控制器中调用它(假设您正在使用控制器)?这是我的控制器
@RequestMapping(value={“/report\u emp”})公共字符串reportTest(Model Model){return null;}
@tangobee仅供参考:
@name
如果您删除空格,例如
@SotiriosDelimanolis
,它的工作会更可靠。在本例中,这并不重要,因为如果您正在回复留下答案的人,则不需要
@name
。在大多数情况下,软件会根据谁的回应来猜测你指的是谁,因为它会忽略“Delimanolis”部分,因为它是在空格之后出现的。至少,我是这样理解的。@trl名字的前三个字母就足够了。@mhm,如果它们是明确的话。老实说,我只是键入@,开始打领带,当我只看到一个名字时,我按tab键。