gpt4 book ai didi

java - 是否可以使用不同的 View 解析器?

转载 作者:IT老高 更新时间:2023-10-28 20:35:25 25 4
gpt4 key购买 nike

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

示例:对于以 report_* 开头的 URL,使用 Birt View 解析器,对于 ajax 调用使用 Tiles 解析器等。

尝试设置 order 属性,但所有 View 都由 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)返回

the View object, or null if not found (optional, to allow for ViewResolver chaining)

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

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

有些实现永远不会返回 null。您的自定义 ViewResolver 类似乎就是这种情况。如果ViewResolver返回一个View,即使那个View最终会渲染失败,Spring也会使用它。

您要么需要解决这个问题,要么订购 ViewResolver bean。例如,您可以使用 Ordered 界面对它们进行排序。让您的类实现该接口(interface)并返回适当的值。

关于java - 是否可以使用不同的 View 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com