【问题标题】:How to access system properties in Thymeleaf template?如何访问 Thymeleaf 模板中的系统属性?
【发布时间】: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 属性,它也会给出相同的错误,所以我知道这不是属性丢失的事实。我做错了什么还是有其他方法可以做到这一点?

【问题讨论】:

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

标签: java spring spring-mvc thymeleaf spring-el


【解决方案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 - 它应该为您填充环境?
    猜你喜欢
    • 2014-01-05
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多