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

如何在Thymeleaf的th:each循环中保留DOM换行与空白字符?

问题根因

Thymeleaf 3.x版本默认开启了模板内容自动修剪配置,会移除模板中多余的空白字符、换行符,循环生成的相邻节点间的空白默认会被清除,因此会出现所有a标签连在一起的情况。

解决方案

方案1:全局配置保留空白(推荐)

Spring Boot环境

直接在application.properties(或application.yml)中添加以下配置即可:

# 关闭模板空白字符自动修剪
spring.thymeleaf.trim-spaces = false
# 开发环境可关闭缓存方便测试
spring.thymeleaf.cache = false

如果是yaml格式的配置:

spring:
  thymeleaf:
    trim-spaces: false
    cache: false

普通Java Web环境

手动配置TemplateResolver时,关闭空白修剪开关:

SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
// 其他原有配置(前缀、后缀、编码等)保持不变
resolver.setTrimSpaces(false); // 核心配置
templateEngine.setTemplateResolver(resolver);

方案2:局部手动添加换行(不需要改全局配置)

如果不想修改全局配置,也可以通过在循环块内手动输出换行符实现效果,修改模板代码如下:

<div>
  <th:block th:each="item : ${你的循环变量集合}">
    <a href="#" style="text-decoration: underline" th:text="${item.content}"></a>
    <!-- 手动插入换行符 -->
    <th:block th:text="'\n'"></th:block>
  </th:block>
</div>

修改完成后重新启动项目,即可得到带换行和空白的预期DOM结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:54:02