tru*_*ktr 10 spring template-engine spring-mvc thymeleaf
例如,我在Spring中的控制器方法执行此操作:
model.addAttribute("view_name", "foobar")
Run Code Online (Sandbox Code Playgroud)
而我正在尝试在我的Thymeleaf模板中执行此操作:
<link th:href="@{/resources/libs/css/${view_name}.css}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
但渲染的结果如下:
<link href="/app/resources/libs/css/${view_name}.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
所以它并没有取代${view_name}我期待的那样.
我究竟做错了什么?一般来说,你如何在Thymeleaf中嵌套这样的表达式?
Tom*_*lst 28
既然你是不是开始使用表达式的URL重写(例如${...},#{...},|...|,__...__,'quoted string',...),Thymeleaf会考虑整个表达式作为String和不执行任何内部表达式.
以下示例将起作用,因为它以表达式开头.
@{${attribute}}
Run Code Online (Sandbox Code Playgroud)
对于您的示例,您有以下可能性
文字替代(首选方法)
您可以String使用管道语法(|)在a中进行文字替换.
<link th:href="@{|/resources/libs/css/${view_name}.css|}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
字符串连接
<link th:href="@{'/resources/libs/css/' + ${view_name} + '.css'}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7150 次 |
| 最近记录: |