如何访问 Thymeleaf 模板中的系统属性?

Posted

技术标签:

【中文标题】如何访问 Thymeleaf 模板中的系统属性?【英文标题】:How to access system properties in Thymeleaf template? 【发布时间】:2014-03-10 16:06:55 【问题描述】:

我需要访问 Thymeleaf 模板中的系统属性。如果这是可能的,那就太好了,这样我就不必用属性显式地填充 spring mvc 模型。我正在尝试为此目的使用 SPEL,但它不起作用。

<h2 th:text="$ systemProperties['serverName'] ">Service name</h2>

<h2 th:text="* systemProperties['serverName'] ">Service name</h2>

这两个都给了我:

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1012E:(pos 17): Cannot index into a null value

即使我尝试访问 jdk 属性,它也会给出相同的错误,所以我知道这不是属性丢失的事实。我做错了什么还是有其他方法可以做到这一点?

【问题讨论】:

如果觉得这对你有帮助:***.com/questions/10529229/… @Sudarshan_SMD 完美。你给了我一个关于如何做到这一点的想法的链接。我将在下面发布我的答案。谢谢!所有功劳归您所有! 【参考方案1】:

@Sudarshan_SMD 发布的链接给了我一个想法,我终于得到了这个工作,如下所示。

将以下 bean 放入您的 spring 上下文中。

<bean id="sysprops" class="java.lang.System" factory-method="getProperties" />

然后access the bean directly 在您的百里香模板中如下所示。

$@sysprops['yourPropertyName']

这是因为@sysprops 允许直接访问 bean 和 bean,它是 java.lang.System,扩展了 java.util.Hashtable,因此允许基于键的访问,而不是基于函数调用的访问。这样做也意味着您只需定义一次此 bean 并在所有模板中使用它,这非常方便。

【讨论】:

【参考方案2】:

我用

$@environment.getProperty('myPropertyName')

【讨论】:

对我不起作用,我需要以某种方式配置环境上下文吗?我用弹簧靴 您是否正在使用 PropertySourcesPlaceholderConfigurer - 它应该为您填充环境?

以上是关于如何访问 Thymeleaf 模板中的系统属性?的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf常用语法:模板片断

如何在 Jquery 中访问模型属性(列表)

thymeleaf模板之href属性

thymeleaf模板之href属性

Thymeleaf (th:each + th:selected) :从每个循环访问选定属性中的变量

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