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

Thymeleaf:HTML实体处理及表达式解析错误求助

解决Thymeleaf中表达式解析错误:Could not parse as expression: "${carPriceSummary.price} + € "

嘿,这个问题我之前踩过坑!本质是Thymeleaf的表达式解析器把€当成了表达式的一部分,但它根本不认识这个符号,所以才抛出了解析错误。下面给你几种靠谱的解决办法:

方法1:用字符串拼接包裹货币符号

把€用单引号括起来,让Thymeleaf把它当成普通字符串来处理,这样表达式就能正确解析了:

<span th:text="${carPriceSummary.price} + '€'"></span>

如果需要在价格和符号之间加空格,改成' €'就行。

方法2:用Thymeleaf的文本内联语法(更简洁)

Thymeleaf提供了|包裹的内联语法,能直接把变量和普通文本混合在一起写,不用手动拼接,可读性更高:

<span th:text="|${carPriceSummary.price} €|"></span>

这种方式下,Thymeleaf会自动识别${}里的变量,剩下的文本直接输出,非常省心。

方法3:如果必须用HTML实体(比如怕编码问题)

要是你担心直接写€会有编码乱码,想用HTML实体&euro;,那得注意用th:utext来渲染(因为th:text会把实体转义成纯文本):

<span th:utext="${carPriceSummary.price} + '&euro;'"></span>

不过一般只要页面设置了UTF-8编码(在HTML头部加<meta charset="UTF-8">),直接写€字符完全没问题,这种方法只在特殊场景下用。

为啥原来的写法会报错?

你原来的代码里,€没有被任何引号包裹,Thymeleaf的表达式解析器会把它当成一个变量名或者语法符号,但它既不是合法的变量名,也不是表达式语法的一部分,自然就解析失败啦。

内容的提问来源于stack exchange,提问作者Salvador Borés

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:35:29