Thymeleaf/Spring MVC - How do you nest variables/expressions in a Link expression?
spring, spring-mvc, template-engine, thymeleaf
Solution
Since you are not starting the url rewrite with an expression (e.g. `${...}`, `#{...}`, `|...|`, `__...__`, `'quoted string'`, ...), Thymeleaf will consider the whole expression as a `String` and not execute any of the inner expressions.
The following example would work because it starts with an expression.
@{${attribute}}
For your example you have the following possibilities
Literal substition (preferred method)
You can do literal substitions in a `String` with the pipeline syntax (`|`).
<link th:href="@{|/resources/libs/css/${view_name}.css|}" rel="stylesheet" />
String concatenation
<link th:href="@{'/resources/libs/css/' + ${view_name} + '.css'}" rel="stylesheet" />
Problem
For example, my controller method in Spring does this: ``` model.addAttribute("view_name", "foobar") ``` And I'm trying to do this in my Thymeleaf template: ``` <link th:href="@{/resources/libs/css/${view_name}.css}" rel="stylesheet" /> ``` But the rendered result is this: ``` <link href="/app/resources/libs/css/${view_name}.css" rel="stylesheet" /> ``` So it's not replacing the `${view_name}` like I'm expecting. What am I doing wrong? In general, how do you nest expressions like that in Thymeleaf?