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

  • 2017-05-05
  • 0
  • 0

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

  1. ## 假定$datas为传递到模板引擎的数组
  2. #set($step = 0) ## 设置步长
  3. #set($length = $datas.size())  ## velocity中数组的长度是size()而非length
  4. #foreach($count in [1..$length])
  5.   #if($count %2 != 0)
  6.     #if($step < $length)
  7.       #set($data = $datas.get($step);
  8.     #else
  9.       #set($data = '')
  10.     #end
  11.     姓名:$!data.name 年龄:$!data.age
  12.  
  13.     #if($step < $length)
  14.       #set($data = $datas.get($step);
  15.     #else
  16.       #set($data = '')
  17.     #end
  18.     姓名:$!data.name 年龄:$!data.age
  19.   #end
  20. #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?

评论

还没有任何评论,你来说两句吧