我将状态和我的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>