Thymeleaf/Spring MVC - How do you nest variables/expressions in a Link expression?

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?


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.


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" />

Need Your Help

Simple_form how to make accept terms checkbox inline

html css ruby-on-rails twitter-bootstrap simple-form

&lt;p&gt;&lt;%= f.input :terms, :as =&gt; :boolean, :label =&gt; false, :boolean_style =&gt; :inline %&gt;