问题
项目使用Thymeleaf模板,后端查询10条数据,但根据不同页面可能会显示其中3条或5条。因此有了List指定数量循环的需求,数量由模板决定,而非后端。
解决
不知道是不是搜索关键字的问题还是问题太简单的原因,网上找到一些都是这种
1${#numbers.sequence(0,3)}
通过Thymeleaf numbers函数进行截取的解决方案。此方案对本项目不适用,因为它要求传入的数据模型就是List,函数会直接截取该List,而项目使用的是更复杂的Map对象。
看了一下Thymeleaf文档,可以使用List的状态变量加以判断来解决这种问题。
1
2
3
4
标题
以上代码使得无论testList实际有多长,最多只有前3个会被使用到。
其中th:each第二个变量就是迭代的状态变量,本文命名的是itemStat。状态变量有如下属性:
index: 当前迭代索引,从0开始。
count: 当前迭代索引,从1开始。
size: 迭代变量中的元素总数。
current: 每个迭代的iter变量, 和本文中的item一样。
even/odd: 当前迭代是偶数还是奇数,布尔值。
first: 在当前的迭代中是否是第一个,布尔值。
last: 在当前的迭代中是否是最后一个,布尔值。
使用 th:if 加 count比较 即可约束后续内容显示。
Thymeleaf相关链接: