我只要想起来就去看看Turbine,但真的很令人失望,自2.3.2以后,好多年没有更新了,与之相关的项目比如maven都发展的很快,甚至不支持Turbine了。
Tiles不是另一种渲染技术,而是一种视图布局技术,这个跟Turbine的布局很相似,甚至更强大。
我使用MyEclipse6.0的Add Spring Capabilities功能加入Spring MVC等所依赖的库,发现已经支持Spring 2.0了。很高兴哦!
当我兴致高昂的从http://tiles.apache.org下载了tiles的jar包,并且按照google上搜到的一篇教程http://esffor.iteye.com/blog/96052进行部署,却怎么也测试不成功。
页 面中的<tiles:getAsString name="title" />和<tiles:insertAttribute name="header" />都无法正常输出,日志打印出TilesContainer not initialized的异常信息。
我已经注意到:
在tiles2中必须改为:
网络上使用Spring mvc+tiles的案例和文章极少,我怀疑是Spring 2.0不支持tiles2,但是在tiles的官网上已经找不到更早的版本了。
幸运的是,Spring官网已经发布了2.5.1,在官网2.5.1文档http://static.springframework.org/spring/docs/2.5.x/reference/view.html#view-tiles中,我看到了
It is possible to integrate Tiles - just as any other view technology - in web applications using Spring. The following describes in a broad way how to do this.
NOTE: This section focuses on Spring's support for Tiles 2 (the standalone version of Tiles, requiring Java 5+) in the org.springframework.web.servlet.view.tiles2 package. Spring also continues to support Tiles 1.x (a.k.a. "Struts Tiles", as shipped with Struts 1.1+; compatible with Java 1.4) in the original org.springframework.web.servlet.view.tiles package.
To be able to use Tiles you have to have a couple of additional dependencies included in your project. The following is the list of dependencies you need.
Tiles version 2.0.4 or higher
Commons BeanUtils
Commons Digester
Commons Logging
These dependencies are all available in the Spring distribution.
看来我的怀疑是正确的。
以下是Spring 2.5.1 MVC + Tiles 2.0.5的配置:
spring-beans.jar
spring-core.jar
spring-context.jar
spring-web.jar
spring-webmvc.jar
#with tiles 2.0.5
commons-beanutils-1.7.0.jar
commons-digester-1.8.jar
tiles-core-2.0.5.jar
tiles-api-2.0.5.jar
tiles-jsp-2.0.5.jar
jstl.jar
#当然,除此之外还需要为web工程加入j2ee 1.4的Libraries和JDK1.5或以上的Libraries。
步骤:
1、最好配置好log4j,便于在配置过程中排错。
2、修改web.xml文件
3、在WEB-INF目录下增加training-servlet.xml文件,修改其内容为:
4、在WEB-INF目录下增加defs/tiles-def.xml,其内容如下:
5、在WEB-INF目录下增加tiles目录,并在tiles目录下增加以下文件:
mainTemplate.jsp
header.jsp
content.jsp
footer.jsp
6、在src下增加一个java class文件:Action.TilesHomeController.java: