例如,我在 Spring 中的 Controller 方法是这样做的:
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 中嵌套这样的表达式?
最佳答案
由于您没有使用表达式开始 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" />
关于spring - Thymeleaf/Spring MVC - 你如何在链接表达式中嵌套变量/表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059314/