Spring Boot集成Thymeleaf时加载自定义字体失败求助
解决Spring Boot + Thymeleaf中@font-face字体加载问题
核心问题与修复方案
1. 修正CSS语法错误
你之前的代码里把url()写成了url{},这是基础的CSS语法错误,直接导致路径解析失败。
2. 正确结合Thymeleaf路径表达式
使用Thymeleaf的内联样式和资源路径表达式,正确的@font-face写法如下:
<html> <head> <title th:text="${report.person.name.first}"></title> <style th:inline="text"> @font-face { font-family: 'roboto'; font-weight: normal; src: url([[@{/fonts/Roboto-Regular.ttf}]]); } </style> </head> <body> ... </body> </html>
3. 确认字体文件的存放路径
Spring Boot默认仅从src/main/resources/static/目录加载静态资源,因此你的fonts文件夹必须放在static目录下,最终路径应为:src/main/resources/static/fonts/Roboto-Regular.ttf
如果直接将fonts放在resources根目录下,Spring Boot无法识别该资源,这也是字体加载失败的常见原因。
验证步骤
- 启动项目后,直接访问
http://localhost:8080/fonts/Roboto-Regular.ttf(端口号根据你的配置调整),若能下载字体文件,说明资源路径配置正确。 - 查看浏览器控制台的网络请求,确认字体文件的请求状态为200 OK,而非404。
内容的提问来源于stack exchange,提问作者robert trudel
相关产品推荐
相关产品推荐

