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

Thymeleaf模板引擎双重转义特殊字符,如何避免该问题?

解决Thymeleaf特殊字符自动转义的问题

这问题我之前开发时也踩过坑!Thymeleaf的[[...]]内联表达式默认会自动转义HTML特殊字符,所以你的sample&.text才会被转成sample&.text。要避免这种情况,有两种实用的解决方法:

方法一:使用不转义的内联表达式

Thymeleaf提供了专门的不转义内联语法[(...)],用它替代[[...]]就能直接输出原始文本,不会转义特殊字符。修改你的模板文件即可:

<html xmlns:th="http://www.thymeleaf.org" th:inline="text" th:remove="tag"> [(${data.fileName})][[${T(abc.composer.NoteData).COMPLETED_NO_ERRORS}]] </html>

如果COMPLETED_NO_ERRORS常量里也有特殊字符,同样可以把它的[[...]]换成[(...)];如果没有特殊字符,保持原样也完全没问题。

方法二:使用th:utext属性输出不转义内容

如果你更习惯用标签属性的方式,也可以用th:utext(unescaped text)来替代默认的th:text(会自动转义)。修改后的模板可以写成这样:

<span th:utext="${data.fileName}" th:remove="tag"></span>
<span th:text="${T(abc.composer.NoteData).COMPLETED_NO_ERRORS}" th:remove="tag"></span>

这种方式适合结构更复杂的模板场景,不过内联表达式会更简洁直观。

重要提醒

使用不转义输出时,一定要确保你的data.fileName内容是安全的!如果这个值来自用户输入,务必先做XSS防护校验,避免恶意HTML/JS代码被直接渲染到页面中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:25:23