在上面代码中,prod: $ {prods}属性值意味着“对于$ {prods}的结果中的每个元素,循环迭代当前模板片段,并使用名为"prod"的变量中作为当前迭代元素来填充模版数据。让我们给迭代过程中的每个部分赋予一个名字:
·我们称${prods}迭代表达式或被迭代变量。
·我们称prod为迭代变量或简单的iter变量。
请注意,prod iter变量的作用域为元素,这意味着它可用于内部标记,如<td>。
被迭代变量的值类型
java.util.List类型不是可以在Thymeleaf中使用迭代的唯一值类型。下面这些类型的对象都是可以通过th:each进行迭代的:
·任何实现java.util.Ilterable接口的对象
·任何实现java.util.Enumeration接口的对象。
·任何实现java.util.Iterator接口的对象,其值将被迭代器返回,而不需要在内存中缓存所有值。
·任何实现java.util.Map的接口对象。迭代映射时,iter变量将是java.util.Map.Entry类。
。任何数组。
·任何其将被视为包含对象本身的单值列表。
保存迭代状态
当使用th:each时,Thymeleaf提供了一种用于跟踪迭代状态的机制︰状态变量。
状态变量在每个th:each属性中定义,并包含以下数据:
·当前迭代索引,从0开始。这是index属性。
·当前的迭代索引,从1开始。这是count属性。
·迭代变量中元素的总量。这是size属性。
·每次迭代的iter变量。这是current属性。
·当前的迭代是偶数还是奇数。这些是even/odd布尔属性。
·当前的迭代是否是第一个迭代。这是first布尔属性。
.当前的迭代是否是最后一个迭代。这是last布尔属性。