【发布时间】:2018-07-13 00:49:15
【问题描述】:
我使用的是 Spring 框架第 4 版,我对放置 XML 文件的文件夹感到困惑,特别是 tile 定义以及在哪里可以找到解析器 bean。
【问题讨论】:
-
提问时请添加相关标签,对增加人的吸引力很有帮助。
标签: java spring spring-4 apache-tiles tiles-3
我使用的是 Spring 框架第 4 版,我对放置 XML 文件的文件夹感到困惑,特别是 tile 定义以及在哪里可以找到解析器 bean。
【问题讨论】:
标签: java spring spring-4 apache-tiles tiles-3
在定义TilesConfigurer bean 时指定了tile 定义xml。如果您使用基于 Java 的配置,则如下所示:
@Bean
public TilesConfigurer tilesConfigurer(){
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(new String[] {"/WEB-INF/**/tiles.xml"});
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}
如果您使用基于 xml 的配置,则如下所示:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/views/**/tiles.xml</value>
</list>
</property>
</bean>
当您指定/WEB-INF/views/**/tiles.xml 时,您是在告诉TilesConfigurer 在/Web-INF/views 目录下递归查找所有切片定义。
【讨论】:
您需要使用几个 bean 配置您的 servlet-context,使 tiles.xml 使用布局模板和 views.xml 中的其余定义来派生 tiles.xml 中的基本定义:
<beans:bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/tiles.xml</beans:value>
<beans:value>/WEB-INF/views/**/views.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
<beans:bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass">
<beans:value>
org.springframework.web.servlet.view.tiles3.TilesView
</beans:value>
</beans:property>
<beans:property name="order" value="0"/>
</beans:bean>
【讨论】:
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>)。就不需要再配置viewClass了。
docs 应该会为您解释这一切。
【讨论】: