0

それぞれ1または2のforeachカウントに基づいてVMファイルを実行するApacheVelocityスクリプトを作成しようとしています。

これが私が使用しているコードです:

#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の場合、カウントが「1 2」であるため、Report2.vmも実行されるということです。とにかく、これをコーディングして、変数のカウントの合計、最大、または合計を確認することはできますか?

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

その他の例については、 ApacheVelocityユーザーガイドを参照してください。

于 2012-12-30T14:29:04.230 に答える