web-dev-qa-db-ja.com

Velocityと$ foreach.count

速度1.7を使用していて、foreachループ内でカウントを出力したいと思います。テンプレートの#foreach /#endセクションに次の文字列があります。

Count: $foreach.count

レンダリングされた結果に次のようなものが表示されることを期待していました

Count: 1
...
Count: 2
...

しかし私が見るすべては:

Count: $foreach.count
...
Count: $foreach.count
...

私は何を間違っているのですか?

18
yannisf

コードは部分的です。foreachディレクティブはありません。

そうでなければ、foreachループに$counterという組み込み変数があることは知っていますが、ガイドでは$foreach.countを参照しています。

10
k.honsali

$foreach.count$counterも機能しませんでした。

この答え$velocityCountの使用を提案し、私にとってはうまくいきました。

26
summerbulb

$counter$foreach.countしかし、これらのどちらも私にはうまくいきませんでした。

しかし $velocityCountタグが機能し、以下に例を示します。

入力コード:

#foreach($entry in $entries)    
    <p>In for Loop count is : $velocityCount</p>     
#end    

出力:

In for Loop count is : 1

In for Loop count is : 2

In for Loop count is : 3
10
Sid Mannem

$ countと呼ばれるforeachループ組み込み変数がガイドの参考として機能していない理由がわかりません。しかし、$ velocityCountは私のために働いています。

「velocity.properties」ファイルに「directive.foreach.counter.name is velocityCount」というプロパティがあるため、デフォルトの$ count変数が機能していない可能性があります。

6

k.honsalisの回答は廃止されました。

この時点では、ドキュメンテーションが非推奨のメソッドを参照している場合でも、$ velocityCountのみを使用できます。

#foreach($item in $items)
counter 0: $foreach.index
counter 1: $foreach.count
counter 2: $counter
counter 3: $velocityCount
#end

Output:

$foreach.index
$foreach.count
$counter
1
2
Goot

デフォルトの変数はvelocityCountですが、必要に応じて変数名と初期値を変更できます(以前の2.0バージョンのみ)。

VelocityEngine engine = new VelocityEngine();
engine.setProperty("directive.foreach.counter.name", "velocityCount");
engine.setProperty("directive.foreach.counter.initial.value", 1);

http://people.Apache.org/~henning/velocity/htmlsingle/VelocityUsersGuide.html

1
Luiz Toscano

$velocityCountは私にとっては機能し、速度1.5を使用しています$foreach.count$counter

0
Humayun