Thymeleaf模板解析错误排查:Spring Boot新手求助
解决Thymeleaf模板解析错误:模板不存在或无法访问
问题描述
我是Thymeleaf和Spring Boot新手,第一个项目遇到错误:
Error resolving templates: template might not exists or might not accessible by any of the configured Template Resolver in Thymeleaf
相关代码
index.html
<!DOCTYPE HTML> <html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org" layout:decorate ="~{layout/default}"> <head> <title> Test-BLH</title> </head> <body style="background-position: 0 -60px;" class="d-flex flex-column min-vh-100"> <div layout:fragment="content" th:remove="tag"> <h1 th:text="${name}"></h1> </div> </body> </html>
控制器代码
@Controller public class LogController { @GetMapping public String show(Model model) { model.addAttribute("name", "Hello_World"); return "logs/index"; } }
自定义ThymeleafConfig
@Configuration public class ThymeleafConfig { @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setPrefix("classpath:templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode("HTML5"); resolver.setCacheable(false); return resolver; } @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver()); return engine; } @Bean public ThymeleafViewResolver viewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); return resolver; } }
解决方案
1. 验证模板文件路径
控制器返回logs/index,结合配置的前缀和后缀,系统会查找src/main/resources/templates/logs/index.html。确认:
templates文件夹下是否存在logs子文件夹logs文件夹内是否有index.html文件- 路径和文件名注意大小写(Linux/macOS环境下大小写敏感)
2. 删除自定义ThymeleafConfig
Spring Boot已经为Thymeleaf提供了完善的自动配置,自定义的配置类不仅多余,还可能遗漏布局方言的注册(你用到了layout:前缀的标签)。直接删除ThymeleafConfig类,依赖默认配置即可,默认的前缀和后缀和你配置的完全一致。
3. 确认布局模板存在
你的index.html使用了layout:decorate ="~{layout/default}",必须确保src/main/resources/templates/layout/default.html存在且格式正确,否则会触发模板解析错误。
4. 清理缓存并重启项目
执行项目构建工具的清理命令:
- Maven:
mvn clean - Gradle:
gradle clean
然后重启项目,避免IDE或编译缓存导致的模板无法加载问题。
内容的提问来源于stack exchange,提问作者Sudeshna Basu
相关产品推荐
相关产品推荐

