我理解Thymeleaf是为渲染视图而制作的,我只是想知道是否有任何方法可以在Thymeleaf片段的请求范围内设置变量?
我有一个非常大的条件表达式,我必须在应用程序中重复很多次,所以如果我可以在主布局中设置变量然后在所有其他子片段中重复使用它将会非常有用。
我知道使用Spring拦截器并在模型中设置变量,但我不愿意。
请告知。
由于
黄芪多糖
答案 0 :(得分:26)
在片段模板中,使用参数:
定义片段<div th:fragment=”myfragment(myvariable)”>
<p th:text=”${myvariable}”></p>
</div>
并在布局模板中,包含指定了该变量的片段:
<div th:include=”template :: myfragment(${variable})”></div>
然后将变量传递给片段模板。
答案 1 :(得分:13)
如果您只需要在片段中使用表达式的结果
th:with="var=${verylargeexpression}"
这将创建一个局部变量,您可以在定义它的dom元素中的任何位置使用它,包括片段。
答案 2 :(得分:1)
<div th:include="'path/your/file/' + ${variable}"></div>
上面的代码可以使用您可以选择的变量来构建文件路径
答案 3 :(得分:0)
如果您正在使用Spring MVC和Thymeleaf,那么您应该能够访问百万美元模板中的任何bean。
只需在全局模板中使用这样的表达式......
<span th:text="${beans.myBean.verylargeexpression}"></span>