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

Thymeleaf中HTML id的字面量与变量拼接问题

解决Thymeleaf动态生成img id的问题

嘿,我来帮你搞定这个Thymeleaf动态生成id的问题!你之前的几种写法都没达到预期效果,核心原因是没用到Thymeleaf官方支持的属性绑定和字符串拼接规则,下面给你梳理正确的实现方式:

正确写法1:通用字符串拼接

直接使用th:id属性(必须带th:前缀,Thymeleaf才会解析该属性内的表达式),用单引号包裹静态字符串部分,再拼接动态变量:

<tr th:each="image: ${images}">
  <img th:id="'idAwesomeIcon' + ${image.id}" />
</tr>

正确写法2:简洁文本替换语法

如果是简单的字符串拼接场景,Thymeleaf的|...|文本替换语法可以简化代码,同样要配合th:id属性使用:

<tr th:each="image: ${images}">
  <img th:id="|idAwesomeIcon${image.id}|" />
</tr>

你之前写法的问题分析

你之前尝试的写法都踩了同一个关键坑:使用了原生HTML的id属性而非Thymeleaf的th:id属性。默认情况下Thymeleaf不会解析原生HTML属性内的表达式,所以动态值根本没被处理。另外部分写法的语法也不符合Thymeleaf规则:

  • 第一种写法里多了多余的单引号:|'idAwesomeIcon${image.id}'|,|...|内部不需要额外嵌套单引号
  • 第三种写法用了类似JS的字符串拼接方式,Thymeleaf不支持这种在原生属性中的写法

用上面的正确写法,就能生成你想要的idAwesomeIcon666这类动态ID啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:59