速度1.7を使用していて、foreachループ内でカウントを出力したいと思います。テンプレートの#foreach /#endセクションに次の文字列があります。
Count: $foreach.count
レンダリングされた結果に次のようなものが表示されることを期待していました
Count: 1
...
Count: 2
...
しかし私が見るすべては:
Count: $foreach.count
...
Count: $foreach.count
...
私は何を間違っているのですか?
コードは部分的です。foreachディレクティブはありません。
そうでなければ、foreachループに$counter
という組み込み変数があることは知っていますが、ガイドでは$foreach.count
を参照しています。
$foreach.count
も$counter
も機能しませんでした。
この答え は$velocityCount
の使用を提案し、私にとってはうまくいきました。
$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
$ countと呼ばれるforeachループ組み込み変数がガイドの参考として機能していない理由がわかりません。しかし、$ velocityCountは私のために働いています。
「velocity.properties」ファイルに「directive.foreach.counter.name is velocityCount」というプロパティがあるため、デフォルトの$ count変数が機能していない可能性があります。
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
デフォルトの変数は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
$velocityCount
は私にとっては機能し、速度1.5を使用しています$foreach.count
&$counter