我非常想在th:with
属性中为Thymeleaf变量分配Thymeleaf方言表达式返回值。
我想实现以下目标:
<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}" />
注意:我完全确定我的#lists.contains
表达式可以正常工作,因为我已经在h1
标签中打印了返回值,并以文本形式返回了true
:
<h1 th:text="${#lists.contains(modelList, modelVariable)}"></h1>
到目前为止,我已经尝试了以下语法,所有这些语法都以某种方式给了我一个解析错误...
没有外部${}
:
<th:block th:with="foo=#lists.contains(modelList, modelVariable)" />
具有预处理:
<th:block th:with="foo=${__#lists.contains(modelList, modelVariable)__}" />
经过预处理并将其包装在${}
中:
<th:block th:with="foo=${__${#lists.contains(modelList, modelVariable)}__}" />
这些表达式为何起作用?
我是在做错什么,还是Thymeleaf th:with
表达式的错误/不可能?
谢谢。
答案 0 :(得分:1)
th:with
表达式本身没有错。但是,使用th:with
创建的变量仅适用于子标记。您的th:block
立即关闭,因此foo
立即超出范围,没有人可以访问它。例如,这将起作用:
<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}">
<div th:text="${foo}" />
</th:block>
但这不是:
<th:block th:with="foo=${#lists.contains(modelList, modelVariable)}" />
<div th:text="${foo}" />
没有办法定义这样的全局变量(除了我猜想放在<html />
标记之外)。