Thymeleaf中的迭代

35 篇文章 0 订阅
18 篇文章 3 订阅

Thymleaf中用th:each属性实现迭代操作。

 <tr th:each="prod : ${prods}">
        <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>

<tr>将会以prods中的每个元素prod,迭代多次。

  • ${prods}称为被迭代的表达式,被迭代的变量(Iterated expression, Iterrated variable)
  • prod称为迭代变量,其作用域为声明其的标签(Interation variable, iter variable)

被迭代的变量允许的类型为:

  • 实现了java.util.Iterable的对象
  • 实现了java.util.Map的对象,此时inter variable为java.util.Map.Entry
  • 数组
  • 其他任何对象会被当做只有该对象本身一个元素的单值列表被迭代

Theamleaf因为其作为模板引擎的使用场景,仅提供了foreach风格的迭代,未直接提供C中经典的for风格循环方式,不过可以通过foreach一个顺序数列来达到同样的效果。

迭代状态

迭代的状态通过状态变量(status variable)反映。声明状态变量的语法为:迭代变量后,紧跟逗号分隔符,然后声明状态命令的名称。

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

状态变量有和迭代变量一样的作用域。

一个状态变量包含数据:

  • index属性,从0开始,当前的迭代索引
  • count属性,从1开始,当前的迭代索引
  • size属性,被迭代变量(Iterated variable)中的元素总数
  • current属性,当前的迭代(Iteration variable)变量
  • even/odd 布尔属性,当前的迭代是奇数还是偶数
  • first/last 布尔属性,当前是否是开始的或最后的迭代

隐式的状态变量

如果没有显式的声明状态变量,一个隐式的状态变量被自动声明,其名称为迭代变量(Iter variable)加上“Stat”的后缀。

  <tr th:each="prod : ${prods}" th:class="${prodStat.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>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值