2014-02-12 4 views
7

Ich muss auf Systemeigenschaften in einem Thymeleaf-Template zugreifen. Es wäre schön, wenn das möglich wäre, damit ich das spring-mvc-Modell nicht explizit mit Eigenschaften bevölkern muss. Ich versuche SPEL für diesen Zweck zu verwenden, aber es funktioniert nicht.Wie kann man auf Systemeigenschaften in der Thymeleaf-Vorlage zugreifen?

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

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

Beide geben Sie mir:

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

Auch wenn ich versuche, eine jdk Eigenschaft zuzugreifen es den gleichen Fehler gibt, damit ich es nicht die Tatsache, dass die Immobilie wissen fehlt. Was mache ich falsch oder gibt es einen anderen Weg?

+1

Wenn denke, das sollte Ihnen helfen: http://stackoverflow.com/questions/10529229/how-can-i-read-system-properties-in-a-tagx-jspx –

+0

@Sudarshan_SMD Perfekt. Über den Link hast du mir eine Idee gegeben, wie das geht. Ich werde meine Antwort unten posten. Vielen Dank! Alles Gute geht an dich! – junkie

Antwort

37

Ich benutze

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

Der Link @Sudarshan_SMD gepostet gab mir eine Idee und ich habe es endlich funktioniert wie unten.

Setzen Sie die folgende Bean in Ihren Frühling Kontext.

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

Dann access the bean directly wie folgt in Ihrer thymeleaf Vorlage.

${@sysprops['yourPropertyName']} 

Dies funktioniert, weil @sysprops an der Bohne und der Bohne direkten Zugriff erlaubt, die java.lang.System ist, erstreckt sich java.util.Hashtable und ermöglicht somit Schlüssel basierten Zugriff im Gegensatz Aufruf basierten Zugriff funktionieren. Dies bedeutet auch, dass Sie diese Bean nur einmal definieren müssen und sie für alle Ihre Vorlagen verwenden müssen, was sehr praktisch ist.