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

标签 java spring freemarker

我的 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/

相关文章:

javax.servlet.ServletException : Not running on Jetty, JSR-356 支持不可用

java - com.google.gson.JsonIOException : JSON document was not fully consumed in Android Retrofit

java - 仅在jsp中 javax.el.E​​LException : org. hibernate.LazyInitializationException:无法初始化代理 - 无 session

java - 如何从 Spring Integration 中的方法返回值而不中断原始消息流?

liferay - 如何获取WCM(Liferay)中的页面列表?

java - Jersey : "couldn' t 找到语法元素是什么意思?

Java keytool - 非法选项 deststorepass :file

java - 如何检查我的交易方式是否真的支持交易?

具有可选 css 类的 Java Freemarker 宏

freemarker - 如何在 freemarker 中打印除第一页以外的所有页面上的表格标题