0

我正在尝试创建一个 Apache Velocity 脚本,它分别基于 1 或 2 的 foreach 计数来执行 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”。无论如何,我可以编写代码来查看变量计数的总和、最大值或总数吗?

4

2 回答 2

1

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

#if ($reportInfo.reportList.size() == 1)
#parse ("/MyReport/Report2.vm")
#elseif ($reportInfo.reportList.size() == 2)
#parse ("/MyReport/Report1.vm")
#end
于 2012-12-30T14:51:38.730 回答
0

嗨,我了解您想计算“for-each”循环执行了多少次,apache 速度模板引擎提供了一种获取循环计数器的简单方法,以便您可以执行以下操作:

<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用户指南

于 2012-12-30T14:29:04.230 回答