1

次のような「for each」ループを使用して速度テンプレートを作成しようとしています

#foreach ($Key in $!{KeyList})
    #if $Key1Function == something, write something #end
#end 

KeyFunctionループを反復するときに、の番号を変更したいと思います。

だから私は$Key$foreach.countFunction, $Key{$foreach.count}Functionand$Key{$foreach.count}$Functionを書いてみましたが、当然のことながらすべて失敗しました。

私も#set( foreach ループ内で)使用してみました。

#set($a = "KeyFunction")
#set($b = "foreach.count") ##(or velocityCount -- same problem)
#set($c = "$a$b")

しかし今、調べ$cてみると が得られKeyFunction1、試してみると $ this (つまり$$c) が得られます$KeyFunction1- Velocity を再度評価することはできません。

あらゆる場所や方法で使用#evaluateしてみましたが、何もしないようです。

編集-問題がはるかに簡単になる場合は、次のように書き直すことができ$Key1Functionます $KeyFunction1が、おそらく「$」記号が少なくて済みますか?

この問題の正しい構文を教えてくれる人はいますか?

ありがとう

4

2 に答える 2

1

評価は値を返しません。コンテンツを出力ストリームにレンダリングするだけです。VelocityTools の RenderTool は値を返します。しかし、このためには、それほど多くの力は必要ありません。コンテキストをそれ自体に入れるだけです:

context.put("ctx", context);

補間された文字列 (二重引用符) を使用してキーを作成し、必要な値を要求します。したがって、次のようなものです。

#foreach ($Key in $!{KeyList})
 #if ($ctx.get("$Key${foreach.count}Function") == something) write something #end
#end
于 2012-07-09T21:20:11.997 に答える
-1

http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html#loopsを参照してください。$velocityCountという変数があり、デフォルトで1から始まるループカウンターが含まれています。

名前と開始値はどちらもカス​​タマイズできます。

于 2012-07-09T20:10:34.497 に答える