Frage

Meine Controller-Methode in Spring macht beispielsweise Folgendes:

model.addAttribute("view_name", "foobar")

Und ich versuche dies in meiner Thymeleaf-Vorlage zu tun:

<link th:href="@{/resources/libs/css/${view_name}.css}" rel="stylesheet" />

Aber das gerenderte Ergebnis ist dieses:

<link href="/app/resources/libs/css/${view_name}.css" rel="stylesheet" />

Es ersetzt also nicht das ${view_name} wie ich es erwartet habe.

Was mache ich falsch?Wie verschachtelt man solche Ausdrücke im Allgemeinen in Thymeleaf?

War es hilfreich?

Lösung

Da Sie die URL-Umschreibung nicht mit einem Ausdruck starten (z. B. ${...}, #{...}, |...|, __...__, 'quoted string', ...), betrachtet Thymeleaf den gesamten Ausdruck als a String und keinen der inneren Ausdrücke ausführen.

Das folgende Beispiel würde funktionieren, da es mit einem Ausdruck beginnt.

@{${attribute}}

Für Ihr Beispiel haben Sie folgende Möglichkeiten

Wörtliche Substitution (bevorzugte Methode)

Sie können wörtliche Substitutionen in a vornehmen String mit der Pipeline-Syntax (|).

<link th:href="@{|/resources/libs/css/${view_name}.css|}" rel="stylesheet" />

String-Verkettung

<link th:href="@{'/resources/libs/css/' + ${view_name} + '.css'}" rel="stylesheet" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top