Spring 6.0.0是否支持Apache Tiles?迁移替代方案咨询
Spring 6.0.0与Apache Tiles兼容性及替代方案
兼容性结论
Spring 6.0.0完全不兼容Apache Tiles,你遇到的java.lang.ClassNotFoundException: org.springframework.web.servlet.view.tiles3.TilesViewResolver异常就是直接体现。原因有两点:
- Apache Tiles项目已停止维护,最后一个稳定版本是2015年发布的3.0.8,后续没有适配Jakarta EE的更新;
- Spring 6基于Jakarta EE 9+规范,使用
jakarta.*命名空间,而Tiles依赖的是旧版Java EE的javax.*命名空间,API完全不兼容,且Spring 6已移除所有Tiles相关的集成类。
替代方案
针对已迁移到Spring 6的代码,推荐以下几种成熟替代方案:
1. Thymeleaf(首选)
作为Spring官方推荐的现代视图模板引擎,Thymeleaf完美支持Jakarta EE,能实现Tiles的布局复用需求:
- 用
th:fragment定义可复用的布局片段(比如页眉、页脚); - 通过
th:insert/th:include在页面中引入片段,替代Tiles的布局定义; - 若使用Spring Boot,直接引入
spring-boot-starter-thymeleaf依赖,搭配nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect可快速实现类似Tiles的整体布局结构。
2. FreeMarker
同样支持Jakarta EE,适合复杂模板场景:
- 通过宏(macro)定义复用片段;
- 利用
<#include>指令实现布局组合,逻辑灵活,能适配多种视图需求。
3. JSP+自定义布局(过渡方案)
如果不想完全替换模板引擎,可基于JSP实现简单布局:
- 用
<jsp:include>标签引入页眉、页脚等公共部分; - 自定义JSP标签封装复杂布局逻辑,但JSP在Spring 6中仅为兼容支持,官方更推荐现代模板引擎。
异常修复步骤
- 移除项目中所有Apache Tiles相关依赖(比如
tiles-core、tiles-spring、tiles-jsp等); - 根据选择的替代方案引入对应依赖(比如Thymeleaf starter);
- 删除原Tiles配置文件(如
tiles.xml)和TilesViewResolver相关配置代码; - 重构视图文件,用新引擎的语法替换Tiles的布局逻辑。
内容的提问来源于stack exchange,提问作者Ramesh Reddy
相关产品推荐
相关产品推荐

