如何在百里香叶模板中访问系统属性?

2022-09-03 03:19:03

我需要访问 Thymeleaf 模板中的系统属性。如果这是可能的,那就太好了,这样我就不必用属性显式填充弹簧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属性,它也给出了相同的错误,所以我知道这不是该属性丢失的事实。我做错了什么,还是有另一种方法可以做到这一点?


答案 1

我使用

${@environment.getProperty('myPropertyName')}

答案 2

@Sudarshan_SMD发布的链接给了我一个想法,我终于让它工作如下。

将以下豆子放在春季环境中。

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

然后直接访问豆类,如下所示在百里香叶模板中。

${@sysprops['yourPropertyName']}

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


推荐