【发布时间】:2013-12-16 23:08:07
【问题描述】:
我知道 Thymeleaf 是为呈现视图而设计的,但是我只是想知道是否有任何方法可以在 Thymeleaf 片段的请求范围内设置变量?
我有一个非常大的条件表达式,我必须在整个应用程序中重复很多次,所以如果我可以在主布局中设置一个变量然后在所有其他子片段中重用它,这将非常有帮助。
我知道使用 Spring 拦截器并在模型中设置变量,但我不想这样做。
请指教。
谢谢
垃圾
【问题讨论】:
标签: thymeleaf
我知道 Thymeleaf 是为呈现视图而设计的,但是我只是想知道是否有任何方法可以在 Thymeleaf 片段的请求范围内设置变量?
我有一个非常大的条件表达式,我必须在整个应用程序中重复很多次,所以如果我可以在主布局中设置一个变量然后在所有其他子片段中重用它,这将非常有帮助。
我知道使用 Spring 拦截器并在模型中设置变量,但我不想这样做。
请指教。
谢谢
垃圾
【问题讨论】:
标签: thymeleaf
在片段模板中,用参数定义片段:
<div th:fragment=”myfragment(myvariable)”>
<p th:text=”${myvariable}”></p>
</div>
在布局模板中,包含指定变量的片段:
<div th:include=”template :: myfragment(${variable})”></div>
然后将变量传递给片段模板。
【讨论】:
如果您只需要片段中的表达式结果,您可以使用
th:with="var=${verylargeexpression}"
这将创建一个局部变量,您可以在定义它的 dom 元素中的任何地方使用它,包括片段。
【讨论】:
<div th:include="'path/your/file/' + ${variable}"></div>
上面的代码可以使用你可以选择的变量来构建文件路径
【讨论】:
如果您将 Spring MVC 与 Thymeleaf 一起使用,那么您应该能够访问 thymeleaf 模板中的任何 bean。
只需在全局模板中使用这样的表达式...
<span th:text="${beans.myBean.verylargeexpression}"></span>
【讨论】: