2012-12-30 50 views
0

我正在嘗試創建一個基於每個1或2的foreach計數來執行VM文件的Apache Velocity Script。Apache Velocity - 根據總的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」 。無論如何,我可以編寫代碼來查看我的變量的總數,最大值或總數嗎?

回答

1

聽起來像你只是想執行一些基於列表大小的邏輯。

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

您的解決方案爲我工作沒有問題。大小是爲我工作的財產。非常感謝。 – user1937434

+0

沒問題,並且與項目的其餘部分祝好運!如果我的回答有幫助,請隨時注意/接受它。 – Perception

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 user guide