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.indexiter.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.indextaskStat.sizetaskStat.counttaskStat.eventaskStat.oddtaskStat.firsttaskStat.last

来源:Tutorial: Using Thymeleaf - 6.2 Keeping iteration status

【讨论】:

以上是关于Thymeleaf - 如何按索引循环列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pageable 在 Spring Boot 和 Thymeleaf 中显示按点赞数排序的技能列表?

在循环中按索引遍历列表列表,以重新格式化字符串

如何在 Thymeleaf 中循环遍历 Map

SpringBoot整合Thymeleaf

如何执行嵌套 Thymeleaf 循环以创建包含来自两个 JPA 表类的字段的表

Thymeleaf模板格式化LocalDatetime时间格式