Thymeleaf - 如何按索引循环列表
Posted
技术标签:
【中文标题】Thymeleaf - 如何按索引循环列表【英文标题】:Thymeleaf - How to loop a list by index 【发布时间】:2020-10-18 18:12:43 【问题描述】:如何按索引循环?
Foo.java
public Foo
private List<String> tasks;
...
index.html
<p>Tasks:
<span th:each="$index: #numbers.sequence(0, $foo.tasks.length)">
<span th:text="$foo.tasks[index]"></span>
</span>
</p>
我遇到了解析错误
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as each: "$index: #numbers.sequence(0, $student.tasks.length)"
【问题讨论】:
既然已经可以遍历集合,为什么还需要使用索引? 最后,我想将列表转换为逗号分隔的字符串。我想检查该项目是否是最后一个元素。所以我必须先按索引循环。 【参考方案1】:Thymeleaf th:each
允许你声明一个迭代状态变量
<span th:each="task,iter : $foo.tasks">
然后在循环中你可以参考iter.index
和iter.size
。
见Tutorial: Using Thymeleaf - 6.2 Keeping iteration status。
【讨论】:
【参考方案2】:如果我们省略它,Thymeleaf 总是声明隐式迭代状态变量。
<span th:each="task : $foo.tasks">
<span th:text="$taskStat.index + ': ' + $task.name"></span>
</span>
这里,状态变量名称是taskStat
,是变量task
和后缀Stat
的聚合。
然后在循环中,我们可以引用taskStat.index
、taskStat.size
、taskStat.count
、taskStat.even
和taskStat.odd
、taskStat.first
和taskStat.last
。
来源:Tutorial: Using Thymeleaf - 6.2 Keeping iteration status
【讨论】:
以上是关于Thymeleaf - 如何按索引循环列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Pageable 在 Spring Boot 和 Thymeleaf 中显示按点赞数排序的技能列表?