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

如何使用Thymeleaf替换HTML文本?附代码示例与期望效果

解决Thymeleaf替换HTML文本时保留图标的问题

这个问题很典型,我来帮你捋清楚问题出在哪以及怎么解决~

你的核心问题是**th:text会完全替换它所在标签的内部内容**:你把th:text="${menuItem.name}"加到了<i>标签上,而Font Awesome图标是靠fa fa-home这个CSS类渲染的,不需要标签内有文本内容。一旦给<i>标签加了th:text,Thymeleaf就会把这个标签里的空内容替换成menuItem.name的值,自然图标就被文字覆盖了。

这里给你几种可行的解决方案:

方案1:使用Thymeleaf内联表达式(最简洁)

直接在<i>标签后面用[[${menuItem.name}]]输出文本,这是Thymeleaf的内联文本语法,完全不会影响图标标签的渲染:

<a>
  <i class="fa fa-home"></i> [[${menuItem.name}]]
  <span class="fa fa-chevron-down"></span>
</a>

方案2:用单独的容器承载文本(适合需要加样式的场景)

如果后续需要给菜单文本单独加CSS样式,可以把文本放在一个独立的<span>标签里,给这个标签绑定th:text:

<a>
  <i class="fa fa-home"></i>
  <span th:text="${menuItem.name}"></span>
  <span class="fa fa-chevron-down"></span>
</a>

方案3:开启父标签的文本内联模式

在<a>标签上添加th:inline="text",然后用内联表达式输出文本,效果和方案1一致:

<a th:inline="text">
  <i class="fa fa-home"></i> [[${menuItem.name}]]
  <span class="fa fa-chevron-down"></span>
</a>

这几种写法都能实现你想要的效果:图标完整保留,文本出现在图标和下拉箭头之间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:15