方法中以Spring传递变量作为参数

a5g8bdjr  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(282)

我将state和stateccounter连接到一个字符串。这是我的hashmap的值,它存储了所有的状态,但是我不能把这个变量放到我的方法中。

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

8aqjt8rx1#

注意事项:
(1) 使用 <td> 标记表示您也在使用 <table> . 有一个 <span> 标签旁边的 <td> 表中的标记不是有效的html(假设这是模板中的样子-也许这只是复制/粘贴的事情)。
(2) 如果你的 order 对象具有 stateRepository 字段,则不需要使用getter order.getStateRepository() . 只需使用字段名即可 order.stateRepository . 你已经和我一起做了 item.state ,例如。thymeleaf将从字段名中找出如何使用相关getter。 item.getState() .
(3) 局部变量的作用域(可用性/可见性),例如 stateNameth:with="stateName=${item.state} 仅限于声明它的标记,以及任何子标记。您的中没有任何子标记 <span> -因此,变量在范围之外的任何地方都不可见。因此,它在 <td> 标签。
(4) 您的例子中需要使用局部变量吗?
而不是使用 get(stateName) ,可以使用 stateName 直接:

get(item.state + item.stateCounter)

因此,总的来说,这应该是可行的(基于上述假设):

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

当然,也许你需要局部变量。这可能取决于thymeleaf模板的更广泛的上下文。

nwsw7zdq

nwsw7zdq2#

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

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

相关问题