spring - Thymeleaf/Spring MVC - 你如何在链接表达式中嵌套变量/表达式?

标签 spring spring-mvc template-engine thymeleaf

例如,我在 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/

相关文章:

perl - 我正在尝试为 perl 中的错误消息的占位符创建一个模板。有什么建议么?

java - Hibernate 5.3,坚持 java.time.* 截断到微秒

java - 是否可以将 Spring @Import 或 @Configuration 参数化?

javascript - Spring mvc security and WEB-INF js,images access-拒绝从 'http://localhost:8081/xyz/static/internal/js/jquery-1.10.2.min.js'执行脚本

google-app-engine - Jinja2 翻译链接

jsp - Spring MVC 3 和图 block 2.2.2 : A definition for every single page?

Spring WorkManagerTaskExecutor 无法在 websphere 中初始化

java - 当存在多个数据源时Spring动态事务管理器

c# - "is"表达式的结果在运行时返回 false,但在检查时返回 true

spring-mvc - SpringMVC生命周期——全貌