Java 是否可以使用不同的视图解析程序?
我在Spring配置中有多个视图解析器,并且希望对不同的请求使用不同的视图解析器 例如:对于以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
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键。