列表有2个元素[0],[1]。
列表中的元素 - [0]在嵌套的ArrayList中有五个元素 [0] [1],[2],[3],[4],[5]
[1]有4个元素 [0],[1],[2],[3],[4]
如何在Thymeleaf中获得总长度/大小,即9?如果可能的话,我需要在任何循环之外使用它来保存临时值。
这让我想到了下一个问题,如何只使用.size而不是遍历数据结构来保存Thymeleaf中的本地自定义变量?我准备编写一个循环来获取这个.size如果需要但我想将它存储在一个局部变量中,我可以在以后的另一个循环中重用它!
示例:
<div th:each="test : ${testList}">
<div th:each="testItem : ${test.subArrayList}">
<div th:each="testItemSub : ${testItem}">
<span> Get total size of "${testItemSub.name}" and store in a variable</span>
</div>
</div>
</div>
答案 0 :(得分:2)
您可以通过每http://www.thymeleaf.org/doc/usingthymeleaf.html#local-variables的th:with
属性设置本地变量。但是,我发现在设置后,我无法更新元素中的局部变量。换句话说,与JSP不同,无法在视图/模板中创建和操作变量。
解决特定用例的最简单方法是:
ArrayList
作为参数并返回计数。显然,您可以在Java代码中实现所需的任何逻辑。
${@myBean.doSomething()}
#ids
表达式实用程序对象。如果您使用id ''
,它可以在模板中用作计数器。但是,只有在整个模板中只有一个这样的计数器时,这才有效。参考:http://www.thymeleaf.org/doc/usingthymeleaf.html#ids 基于原始问题的#ids
示例用法:
<div th:each="test : ${testList}">
<div th:each="testItem : ${test.subArrayList}">
<div th:each="testItemSub : ${testItem}">
<span> Get total size of "${testItemSub.name}" and store in a variable</span>
<!--/*/ <th:block th:text="${#ids.seq('')}"></th:block> /*/-->
</div>
</div>
</div>
<p>There are a total of <span th:text="${#ids.prev('')}">123</span> elements.</p>