2011-10-18 5 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中に変数を設定し、すでに設定されているかどうかを確認することができます。同様に #if($ foo!= "bar") #set($ foo = "bar") //ここではdoを実行 #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 

関連する問題