Velocity模板循环支持自定义步长

Velocity模板引擎中只有一个#foreach指令支持循环的遍历,每次都是循环一次。
但有时候会遇到在一行里面显示两列数据,也就是说需要在一次循环中读取两条数据,这就涉及到步长的概念。Velocity模板引擎的#foreach指令不支持设置步长,但可以通过下面的方式实现自定义步长:


## 假定$datas为传递到模板引擎的数组
#set($step = 0) ## 设置步长
#set($length = $datas.size()) ## velocity中数组的长度是size()而非length
#foreach($count in [1..$length])
#if($count %2 != 0)
#if($step < $length) #set($data = $datas.get($step); #else #set($data = '') #end 姓名:$!data.name 年龄:$!data.age #if($step < $length) #set($data = $datas.get($step); #else #set($data = '') #end 姓名:$!data.name 年龄:$!data.age #end #end

在Velocity中,数组会转成类是List的类型,所以获取数组长度使用$datas.size()而不是$datas.length,通过下标获取元素的方式使用$datas.get($step),而不是$datas[$step]。

通过以上方式就是在Velocity模板引擎中实现自定义步长,虽然有些繁琐但是非常有效的。

参考资料:
velocity 模板的 foreach 如何支持步长
How to access/get the size of an array/collection in velocity templates?

发表评论

电子邮件地址不会被公开。 必填项已用*标注