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

Thymeleaf文本模板特殊字符解析问题求助

解决Thymeleaf OGNL表达式单引号解析错误

嘿,我之前也踩过这个坑!你遇到的问题是OGNL和Thymeleaf的引号解析规则冲突导致的——OGNL里本来用两个单引号转义内部单引号,但直接写在th:text的表达式里会触发解析异常。下面给你几个实用的解决方案:

方案1:用双引号包裹OGNL字符串

OGNL支持用双引号定义字符串,这样内部的单引号就不用转义了。注意因为Thymeleaf的属性值本身是双引号包裹的,所以要对表达式里的双引号加反斜杠转义:

[# th:text="${\"What's up?\"}" /]

这样OGNL能正确识别字符串,Thymeleaf也能正常解析整个属性。

方案2:用Thymeleaf内联文本语法

内联文本[[...]]的写法更清爽,处理特殊字符也更省心,不需要纠结转义问题:

[[${'What''s up?'}]]

如果这段文本不需要从变量取值,甚至可以直接写静态文本(Thymeleaf会自动帮你处理HTML转义):

[[What's up?]]

方案3:处理&这类HTML实体

如果你的需求里包含&这类特殊字符,默认的th:text会自动把&转成&(HTML转义)。要是你想输出原始的HTML实体,或者不需要转义,可以用th:utext:

[# th:utext="${'What\'s up? & welcome!'}" /]

⚠️ 注意:th:utext会直接渲染HTML内容,要警惕XSS风险,别用在用户输入的内容上。

最后补个小知识点:OGNL的单引号转义规则是两个单引号代表一个单引号,但在Thymeleaf的属性上下文里容易和模板的引号处理冲突,所以优先用双引号或者内联语法会更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:18