Apache Velocity - 基于Total Foreach计数的Parse VM文件

时间:2012-12-30 14:19:15

标签: java apache velocity

我正在尝试创建一个Apache Velocity脚本,该脚本分别根据foreach计数1或2执行VM文件。

以下是我正在使用的代码:

#set ($i = 0)
#foreach ($report in $reportInfo.reportList)
#set ($i = $i + 1)
#if ($i == 2)
#parse ("/MyReport/Report1.vm")
#end
#end

#set ($j = 0)
#foreach ($Report in $reportInfo.reportlist)
#set ($j = $j + 1)
#if ($j == 1 )
#parse ("/MyReport/Report2.vm")
#end
#end

最终发生的事情是,如果foreach总数为2,那么它也将运行Report2.vm,因为计数为“1 2”。无论如何我是否可以对此进行编码以查看变量的总数,最大值或总数?

2 个答案:

答案 0 :(得分:1)

听起来像你只想根据列表的大小执行一些逻辑。

#if ($reportInfo.reportList.size() == 1)
#parse ("/MyReport/Report2.vm")
#elseif ($reportInfo.reportList.size() == 2)
#parse ("/MyReport/Report1.vm")
#end

答案 1 :(得分:0)

您好我明白您想要计算'for-each'循环执行的次数,apache velocity templating engine提供了一种简单的方法来获取循环计数器,以便您可以执行以下操作:< / p>

<table>
#foreach( $customer in $customerList )
<tr><td>$foreach.count</td><td>$customer.Name</td></tr>
#end
</table>

Velocity also has other convenience counters like:
1. $foreach.index instead of $foreach.count
2. $foreach.hasNext
3. $foreach.first and $foreach.last are also provided to compliment $foreach.hasNext

请参阅Apache Velocity user guide以获取更多示例。