无法从 Thymeleaf 中的模型对象设置默认 CSS 变量

Posted

技术标签:

【中文标题】无法从 Thymeleaf 中的模型对象设置默认 CSS 变量【英文标题】:Not able to Set default CSS variables from model object in Thymeleaf 【发布时间】:2022-01-22 01:14:54 【问题描述】:

我在 Thymeleaf 模板的样式标签内设置 CSS 字体变量。字体值来自模型 目的。我还想应用默认颜色,以防模型属性不存在。 我正在使用 elvis 运算符来选择默认值 Elvis Operator link

但是当我渲染模板时,它正在搜索brandingConfig,然后是themeConfig,然后是fontName,但fontName是 不存在于themeconfig中。所以不是选择默认值,而是抛出错误。下面是错误 我得到的

org.thymeleaf.exceptions.TemplateProcessingException:评估 SpringEL 表达式的异常: “brandingConfig?.themeConfig?.fontName”。

org.springframework.expression.spel.SpelEvaluationException: EL1008E: 在“java.util.LinkedHashMap”类型的对象上找不到属性或字段“fontName” - 可能不公开或无效?

下面是我的风格标签。我是 Thymeleaf 的新手,我应该在这里做些什么不同的事情?

<style th:inline="text">
:root 
    --font-name: [[$brandingConfig?.themeConfig?.fontName?: 'Proxima Nova']];
    --font-url: [[$brandingConfig?.themeConfig?.fontUrl?: 'https://fonts.googleapis.com/css?family=Proxima+Nova']];

【问题讨论】:

themeConfig 是地图吗?出于好奇,我想知道“?”是什么?表示型号名称后面; brandingConfig?.themeConf... @atish.s 是的 themeConfig 是一个地图。 【参考方案1】:

如果这些表达式对我有用:

<style th:inline="text">
:root 
    --font-name: [[$brandingConfig?.themeConfig?.get('fontName')?: 'Proxima Nova']];
    --font-url: [[$brandingConfig?.themeConfig?.get('fontUrl')?: 'https://fonts.googleapis.com/css?family=Proxima+Nova']];

</style>

我不确定具体原因,但我认为这与安全导航操作员使用地图键的方式有关...

【讨论】:

以上是关于无法从 Thymeleaf 中的模型对象设置默认 CSS 变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 thymeleaf 模板中表示 2 个模型对象

使用 Thymeleaf 从 Spring 模型设置 JavaScript 变量

如果表单输入没有明确使用它,如何设置Spring Form和Thymeleaf不更改作为模型属性添加的对象的字段?

Thymeleaf:对象中的对象,无法像jsp那样访问值?属性或字段 - 在 null 上找不到

无法解析来自thymeleaf的javascript中的JSON对象

thymeleaf在项目中的使用