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

Thymeleaf邮件模板无法解析HTML标签问题求助

解决Thymeleaf渲染HTML标签被转义的问题

问题核心是你用th:text属性渲染包含HTML的变量lateSteps时,该属性会自动转义所有HTML特殊字符,导致标签被当作文本显示。要让HTML正常解析,需使用Thymeleaf的非转义文本属性th:utext,同时修正模板中的语法错误。

具体修改步骤:

1. 替换th:text为th:utext

把模板中渲染lateSteps的代码从:

<span th:text="${lateSteps}"></span>

改成:

<span th:utext="${lateSteps}"></span>

th:utext会直接输出变量中的原始HTML内容,不做转义,这样标签就能被正常解析渲染。

2. 修正模板中的语法错误

原模板第二个<p>标签里存在多余的</span>,会导致HTML结构混乱,需删除;同时注意Java代码与模板的变量名统一(Java里传的是firstNameTL/lastNameTL,模板里原用firstNameTeamLead/lastNameTeamLead,需对齐):

原错误片段:

<p></span> <span th:text="${member}"> !</span> did not:
<span th:text="${lateSteps}"></span></p>

修正后:

<p><span th:text="${firstNameMember}"></span> did not:</p>
<span th:utext="${lateSteps}"></span>

3. 修改后的完整模板

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Template for reminder to team lead</title>
    </head>
    <body>
        <p>Hello <span th:text="${firstNameTL}"></span> <span th:text="${lastNameTL}"></span>!</p>
        <p><span th:text="${firstNameMember}"></span> did not:</p>
        <span th:utext="${lateSteps}"></span>
    </body>
</html>

补充说明

  • th:text:会将HTML特殊字符(如<、>)转义为实体字符(&lt;、&gt;),适合渲染纯文本内容。
  • th:utext:直接输出原始内容,不做转义,专门用于渲染包含HTML标记的字符串。

你的Java变量传递代码无需修改,只要保证传入的lateSteps是合法的HTML结构即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:25:23