我的春季应用程序中有一个freemarker viewresolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
在我的控制器方法中,我可以返回我的freemarker模板的名称:
return "timeline";
没有任何问题。
现在我已经创建了一种新的模板语言,我想让一些控制器使用这种自定义模板语言。所以我创建了一个CustomViewResolver。
<bean id="viewResolver" class="org.CustomViewResolver">
现在我有2个视图解析器,一个自由标记解析器和我的自定义解析器。
如何指定哪个控制器应该使用哪个ViewResolver?
因为我的后端会使用freemarker而我的前端会使用自定义标记。
答案 0 :(得分:2)
您可以尝试以下示例中的内容:
文件夹和文件结构
webapp
WEB-INF
dispatcher-servlet.xml
jsp
bar
bar-baz.jsp
foo
foo-fro.jsp
<强>调度-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>
<强>控制器强>
@RequestMapping(value="/bar")
public String bar() { return "bar-baz"; }
@RequestMapping(value="/foo")
public String foo() { return "foo-fro"; }
您将利用框架提供的视图名称模式匹配。如果遇到问题,可以尝试为视图解析器设置一个额外的order
属性,以控制解析器应尝试查找请求视图的顺序。如果自定义解析程序失败,您可以将自定义视图解析程序置于顶部(最低顺序)并尝试其他解析程序。