Thymeleaf / Spring MVC-как вложить переменные / выражения в выражение ссылки?
Например, мой метод контроллера весной делает это:
model.addAttribute("view_name", "foobar")
И я пытаюсь сделать это в моем шаблоне Thymeleaf:
<link th:href="@{/resources/libs/css/${view_name}.css}" rel="stylesheet" />
Но полученный результат таков:
<link href="/app/resources/libs/css/${view_name}.css" rel="stylesheet" />
Так что это не замена ${view_name}
, Как я ожидаю.
Что я делаю не так? В общем, как вы можете вложить такие выражения в Thymeleaf?
1 ответ:
Поскольку вы не начинаете переписывать url-адрес с помощью выражения (например,
${...}
,#{...}
,|...|
,__...__
,'quoted string'
, ...), Thymeleaf будет рассматривать все выражение какString
и не выполнять ни одного из внутренних выражений.Следующий пример будет работать, потому что он начинается с выражения.
@{${attribute}}
Для вашего примера у вас есть следующие возможности
Литеральная подстановка (предпочтительный метод)
Вы можете делать буквальные подстановки в
String
с синтаксисом конвейера (|
).<link th:href="@{|/resources/libs/css/${view_name}.css|}" rel="stylesheet" />
Конкатенация строк
<link th:href="@{'/resources/libs/css/' + ${view_name} + '.css'}" rel="stylesheet" />