Apache tiles3-SpringMVC
Apache的一个独立项目。
Apache Tiles是一个JavaEE应用的页面布局框架。
Spring MVC 以视图解析器的形式为Apache Tiles提供了支持,这个视图解析器能够将逻辑视图名解析为Tile定义。
今天我们学习Apache Tiles3这个版本。
一、配置视图解析器
回想一下我们在曾经配置过的试图解析器:
1 @Bean 2 public ViewResolver viewResolver() { 3 InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 4 resolver.setPrefix("/WEB-INF/views/"); 5 resolver.setSuffix(".jsp"); 6 return resolver; 7 }
为了在Spring中能够使用Tiles,我们需要配置几个bean,我们需要一个 TilesConfigurer bean,它会负责定位和加载Tile定义并协调生成Tiles。
除此之外,还需要 TilesViewResolver bean 将逻辑视图名称解析为Tiles定义。
Apache Tiles3的TilesConfigurer/TilesViewResolver 位于 org.springframework.web.servlet.view.tiles3 包中。
我们如下配置视图解析器:
1 @bean 2 public TilesConfigurer tilesConfigurer() { 3 TilesConfigurer tiles = new TilesConfigurer(); 4 tiles.setDefinitions(new String[]{ 5 "/WEB-INF/layout/tiles.xml" //指定Tile定义的位置 6 }); 7 tiles.setCheckRefresh(true); //起用刷新功能 8 return tiles; 9 }
当配置TilesConfigurer 的时候,所要设置的最重要的属性就是definitions。这个属性接受一个String类型的数组,其中每个元素都指定一个Tile定义的XML文件。
TilesViewResolver并不需要过多配置什么,如下:
1 @bean 2 public ViewResolver viewResolver(){ 3 return new TilesViewResolver(); 4 }
二、定义Tiles
Apache提供了一个文档类型定义(document type definition,DTD),用在xml文件中指定Tiles的定义。
xml中有<definition>标签: name属性,template属性,extends属性。
<put-attribute>子标签:value属性
具体XML如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE tiles-definitions PUBLIC 3 "-//apache Software Foundation//DTD Tiles Configuration 3.0//EN" 4 "http://tiles.apache.org/dtds/tiles-config_3_0.dtd" 5 > 6 <tiles-definitions> 7 <definition name="base" template="/WEB-INF/layout/page.jsp"> 8 <put-attribute name="header" value="/WEB-INF/layout/header.jsp" /> 9 <put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" /> 10 </definition> 11 12 <definition name="home" extends="base"> 13 <put-attribute name="body" value="/WEB-INF/layout/home.jsp" /> 14 </definition> 15 <definition name="registerForm" extends="base"> 16 <put-attribute name="body" value="/WEB-INF/layout/registerForm.jsp" /> 17 </definition> 18 <definition name="profile" extends="base"> 19 <put-attribute name="body" value="/WEB-INF/layout/profile.jsp" /> 20 </definition> 21 <definition name="spittles" extends="base"> 22 <put-attribute name="body" value="/WEB-INF/layout/spittles.jsp" /> 23 </definition> 24 <definition name="spittle" extends="base"> 25 <put-attribute name="body" value="/WEB-INF/layout/spittle.jsp" /> 26 </definition> 27 </tiles-definitions>
我们再来设置template