gpt4 book ai didi

java - 指定每个 Controller 使用哪个 ViewResolver?

转载 作者:行者123 更新时间:2023-11-30 03:47:17 25 4
gpt4 key购买 nike

我的 Spring 应用程序中有一个 freemarker viewresolver:

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

在我的 Controller 方法中,我可以返回我的 freemarker 模板的名称:

return "timeline";

工作没有任何问题。

现在我已经创建了一种新的模板语言,并且我希望一些 Controller 使用这种自定义模板语言。所以我创建了一个 CustomViewResolver。

<bean id="viewResolver" class="org.CustomViewResolver">

现在我有 2 个 View 解析器,一个是 freemarker,另一个是我的自定义 View 解析器。

如何指定哪个 Controller 应使用哪个 ViewResolver?

因为我的后端将使用 freemarker,而我的前端将使用自定义的。

最佳答案

您可以尝试按照以下示例进行操作:

文件夹和文件结构

webapp
WEB-INF
dispatcher-servlet.xml
jsp
bar
bar-baz.jsp
foo
foo-fro.jsp

dispatcher-servlet.xml

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/bar/" />
<property name="suffix" value=".jsp"/>
<property name="viewNames" value="bar-*"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/foo/" />
<property name="suffix" value=".jsp"/>
<property name="viewNames" value="foo-*"/>
</bean>

Controller

@RequestMapping(value="/bar")
public String bar() { return "bar-baz"; }

@RequestMapping(value="/foo")
public String foo() { return "foo-fro"; }

您将利用框架提供的 View 名称模式匹配。如果遇到问题,您可以尝试为 View 解析器设置额外的 order 属性,以控制解析器尝试查找请求 View 的顺序。您可以将自定义 View 解析器放在顶部(最低顺序),并在自定义解析器失败时尝试其他解析器。

关于java - 指定每个 Controller 使用哪个 ViewResolver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339741/

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