css - 从 Thymeleaf 中的模型对象设置 CSS 变量

标签 css spring-boot thymeleaf

我正在 Thymeleaf 模板的样式标签内设置 CSS 颜色变量。颜色值来自模型对象。我还想应用默认颜色,以防模型属性不存在。

但是当我渲染模板时,Thymeleaf 不会计算表达式,而是将整个表达式指定为字符串文字,而不是颜色值。

下面是我的风格标签。我在 Apache Freemarker 中做了同样的事情,而且效果很好。我对 Thymeleaf 还很陌生,我应该做什么不同的事情?

<style>
  :root {
    --primary-color: ${brandingConfig?.themeConfig?.primaryColor} ?: '#633EA5';
    --secondary-color: ${brandingConfig?.themeConfig?.secondaryColor} ?: '#E9E6ED';
  }
</style>

最佳答案

如果你想设置CSS变量,你应该使用CSS inlining .

<style th:inline="css">
  :root {
    --primary-color: [(${brandingConfig?.themeConfig?.primaryColor} ?: '#633EA5')];
    --secondary-color: [(${brandingConfig?.themeConfig?.secondaryColor} ?: '#E9E6ED')];
  }
</style>

通常,Thymeleaf 处理器仅计算标签的 th:* 属性中的表达式。但是,如果您在样式标记上设置 th:inline="css",则可以使用 [[...]] 表达式来计算标记内的文本。

关于css - 从 Thymeleaf 中的模型对象设置 CSS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62610602/

相关文章:

css - Bootstrap - 单选按钮的布局

java - 使用 Spring boot 将 RESTful 服务部署到 AWS

java - Spring Boot、Spring Security、 session 范围 Bean 的 session 超时问题,@PreDestroy

spring - 使用 thymeleaf 3 处理字符串模板

python - 如何在提交时验证 Flask 表单?

javascript - 在鼠标滚轮滚动时更改选择输入中的所选元素

css - <tr> 背景颜色只在偶数 child 身上改变

java - 访问 spring bean 代理引用本身

JavaScript 不从 HTML 更新值

spring - 如何在 Thymeleaf 上设置多个条件