如何访问 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 模板中的系统属性?的主要内容,如果未能解决你的问题,请参考以下文章