You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:47:32