thymeleaf - Thymeleaf嵌套列表/arraylist获取所有元素的总大小

列表有2个元素[0],[1] 。

元素- [0]在嵌套的ArrayList [0] [1]中有五个元素,

[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>

时间:

你可以通过每个http://www.thymeleaf.org/doc/usingthymeleaf.html#local-variablesth:with属性设置一个本地变量,但是,我没有找到在元素被设置后更新该局部变量的方法,换句话说,与JSP不同,变量不能在视图/模板中创建和操作。

解决您的特定用例的最简单方法是:

  1. 设置包含将在ArrayList中接受的方法作为参数,并且返回计数的模型对象,显然,你可以在Java代码中实现所需的任何逻辑,
    • 类似地,可以使用spring bean而不是模型对象,语法使用:${@myBean.doSomething()}
  2. 使用Thymeleaf附带的#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>

...