1.配置Tiles视图解析器
我们需要配置TilesConfigurer bean它会负责定位和加载Tile定义并生成Tiles,还需要定义TilesViewResolver bean将逻辑视图名称解析为TIle定义
XML配置方式:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>classpath:views/views-adminIndex.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver"/>
Java配置方式
@Bean
public TilesConfigurer tilesConfigurer(){
TilesConfigurer tiles = new TilesConfigurer();
tiles.setDefinitions(new String[]{
"classpath:views/views-adminIndex.xml" //指定Tile定义的功能
});
tiles.setCheckRefresh(true); //启用刷新功能
return tiles;
}
@Bean
public ViewResolver viewResolver(){
return new TilesViewResolver();
}
2.接下来配置views-adminIndex.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="admin" template="/jsp/admin.jsp"> <!-- 页面的底板 -->
<put-attribute name="header" value="/jsp/adminHead.jsp"/>
<put-attribute name="body" value="/jsp/adminBody.jsp"/>
<put-attribute name="right" value="/jsp/admingRight.jsp"/>
</definition>
</tiles-definitions>
注意:
1.Controler返回的视图名称是我们定义的definition中的name属性值,所以,需要更改控制器的返回值,否则无法解析
2.views-adminIndex.xml中的definition一定要有name属性值,否则,会报xml解析错误
3.控制页面的CSS,js可以不用写在底板jsp中,写在引入的jsp中就可以