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

Spring Boot整合Thymeleaf时模板解析失败问题咨询

解决Thymeleaf模板解析失败:找不到fragments/header的问题

嘿,我刚梳理了你遇到的这个模板找不到的问题,咱们一步步来排查解决:

1. 先确认文件的存放位置是否正确

Spring Boot中Thymeleaf默认会从src/main/resources/templates目录加载模板文件,所以你的header.html必须放在templates/fragments/下面,也就是完整路径是src/main/resources/templates/fragments/header.html。另外要注意文件名大小写敏感,别把header.html写成Header.html(Windows系统可能不敏感,但部署到Linux/macOS环境会出问题)。

2. 修正th:replace的语法细节

看你list.html里的代码:

<div th:replace="~{fragments/header}:: header"></div>

这里有两个可以调整的地方:

  • 可以简化写法,去掉~{}包裹,写成:<div th:replace="fragments/header :: header"></div>(两种写法都合法,但简化后更清晰)
  • 必须确保header.html里正确定义了名为header的片段,比如:
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
        <!-- 这里要明确标注fragment名称 -->
        <header th:fragment="header">
            <!-- 你的头部内容,比如导航栏、logo等 -->
        </header>
    </body>
    </html>
    

另外错误提示里显示~{fragments/header(少了闭合的}),检查下你的代码是不是拼写时漏了这个符号,这也会导致模板解析失败。

3. 确认依赖是否完整引入

如果是Maven项目,确保pom.xml里有Thymeleaf的starter依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

如果用了layout方言(你的代码里引入了layout命名空间),还要加上对应的依赖:

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

Gradle项目的话,对应依赖配置是:

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'

4. 清理缓存并重启项目

有时候IDE的缓存会导致新添加的模板文件没被加载,试试:

  • 执行Maven的clean命令(或者Gradle的clean)
  • 打开IDE的File -> Invalidate Caches / Restart选项,清理缓存后重启项目

做完这些步骤,应该就能解决模板找不到的问题啦!

内容的提问来源于stack exchange,提问作者Niles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:30:52