6.2 保持遍历状态
当使用th:each时,Thymeleaf提供了一种有用的机制来跟踪遍历的状态:状态变量。
状态变量定义在th:each属性里,并包含以下数据:
当前的遍历索引,从0开始。此为index属性。
当前的遍历索引,从1开始。此为count属性。
被遍历变量里的元素数量。此为size属性。
每次遍历的遍历变量。此为current属性。
当前的遍历是偶数次还是奇数次。此为even/odd布尔属性。
当前是否为首次遍历。此为first布尔属性。
当前是否为最后一次遍历。此为last布尔属性。
让我们看看怎么在之前的例子里使用它:
<table>
<tr>
<th>NAME</th>
<th>PRICE</th>
<th>IN STOCK</th>
</tr>
<tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'">
<td th:text="${prod.name}">Onions</td>
<td th:text="${prod.price}">2.41</td>
<td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
</table>状态变量(此例子里的iterStat)定义在th:each属性里,跟在遍历变量后面,由逗号分隔。就像遍历变量一样,状态变量的作用范围也是在由持有th:each属性的标签定义的代码片段之上。
让我们看一下处理我们的模版的结果:
注意:我们的遍历状态变量完美地工作了,只在奇数行上建立了oddCSS类。
如果你不明确地设置一个状态变量,Thymeleaf总是会通过在遍历变量的名字后加上后缀Stat为你创建一个状态变量:
Last updated
Was this helpful?