Thymeleafテンプレートのシステムプロパティにアクセスする必要があります。これが可能であれば、SpringMVCモデルにプロパティを明示的に入力する必要がないので便利です。この目的で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プロパティにアクセスしようとしても同じエラーが発生するため、プロパティが欠落しているわけではないことがわかります。私は何を間違っているのですか、それともこれを行う別の方法がありますか?
私が使う
${@environment.getProperty('myPropertyName')}
@Sudarshan_SMDが投稿したリンクからアイデアが浮かび、ついにこれを以下のように機能させることができました。
次のBeanをSpringコンテキストに配置します。
<bean id="sysprops" class="Java.lang.System" factory-method="getProperties" />
次に Beanに直接アクセスします thymeleafテンプレートで次のようにします。
${@sysprops['yourPropertyName']}
これが機能するのは、@ syspropsがBeanへの直接アクセスを許可し、Bean(Java.lang.System)がJava.util.Hashtableを拡張するため、関数呼び出しベースのアクセスではなく、キーベースのアクセスを許可するためです。このようにすることは、このBeanを一度定義するだけで、すべてのテンプレートで使用できることを意味します。これは非常に便利です。