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

Thymeleaf模板中如何通过内联CSS动态设置HEX颜色值?

Thymeleaf内联CSS动态设置HEX颜色时#被转义的解决方法

Thymeleaf默认的[[${}]]内联语法会自动转义特殊字符,导致你设置的HEX颜色码里的#被转成\#,进而让CSS变量无法正确识别颜色值。

解决方法很直接,改用无转义内联语法[(${})]即可——它会直接输出变量的原始内容,不会对特殊字符做转义处理:

修改后的模板代码:

<style th:inline="css">
    :root {
        --primary-color: [(${invoiceColor})];
    }
</style>

Java代码无需改动,保持原逻辑:

Context context = new Context();
context.setVariable("invoiceColor", "#E01B33");
var templateHTML = templateEngine.process("invoiceA4", context);

此时生成的HTML会输出正确的颜色值:

<style th:inline="css">
    :root {
        --primary-color: #E01B33;
    }
</style>

如果你的场景需要考虑XSS安全(比如invoiceColor变量内容不可信),也可以用Thymeleaf字符串工具类手动取消转义:

<style th:inline="css">
    :root {
        --primary-color: [[${#strings.unescapeXml(invoiceColor)}]];
    }
</style>

不过这种方式不如[(${})]简洁,推荐优先使用第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:15:42