2011-10-18 29 views
0

我嘗試修改代碼生成的vsl文件,以檢查是否實際輸入了foreach循環,並且完全執行初始化代碼。我嘗試類似java的.length> 0但不起作用:

myMethod() { 
    #if (${reference.attributes}.length > 0) 
     [some init code] 

     #foreach ($attribute in ${reference.attributes}) 
      #some_macro($attribute) 
     #end 
     [some other code related to stuff created in the 
    #end 
} 

什麼是正確的方法?

謝謝。

+0

如果我正確理解你的問題,你只需要運行一次init代碼。您可以在init中設置變量並檢查是否已經設置。像這樣 #if($ foo!=「bar」) #set($ foo =「bar」) //在這裏做init #end – SirVaulterScoff

回答

4

調用size()方法。這將適用於集合和數組(從Velocity 1.6+開始)。

#if (${reference.attributes.size()} > 0) 
-1
 

#foreach ($foo in $bar) 
    $foo 
#end 

Or if you want to iterate over a number range: 

#foreach ($number in [1..34]) 
    $number 
#end