传递百里香变量作为方法的参数



我将状态和我的stateCounter连接到一个String。这是我的HashMap的值它存储了所有状态但是我没有把这个变量放到我的方法中

<span th:with="stateName=${item.state} + ${item.stateCounter}"></span>
<td th:text="${{order.getStateRepository().get(${stateName})}}"></td>

注意事项:

(1)使用<td>标签表明您也在使用<table>。有一个<span>标签旁边的<td>标签内表是无效的HTML(假设这是它看起来像在你的模板-也许这只是一个复制/粘贴的东西)。

(2)如果你的order对象有一个stateRepository字段,那么你不需要使用getterorder.getStateRepository()。您可以只使用字段名order.stateRepository。例如,您已经在item.state中这样做了。Thymeleaf将从字段名中找出如何使用相关的getter -例如item.getState()

(3)局部变量的作用域(可用性/可见性),例如th:with="stateName=${item.state}中的stateName,仅限于声明它的标记,以及任何子标记。您在<span>中没有任何子标签-因此该变量在您的span之外的任何地方都不可见。因此,它在<td>标签中不可用。

需要

在示例中使用局部变量吗?不使用get(stateName),您可以直接使用stateName引用的表达式:

get(item.state + item.stateCounter)
所以总的来说,这应该是可行的(基于上面的假设):
<td th:text="${order.stateRepository.get(item.state + item.stateCounter)}"></td>
当然,也许你确实需要局部变量。这可能取决于thymleaf模板的更广泛的上下文。

您正在尝试使用局部变量。如果您尝试以下操作,它将工作:

<div th:with="stateName=${item.state} + ${item.stateCounter}">
<td th:text="${order.getStateRepository().get(stateName)}"></td>
</div>

最新更新