Скорость и $foreach.count

Я использую скорость 1.7 и внутри цикла foreach я хочу напечатать счетчик. В шаблоне у меня есть следующая строка в разделе # foreach/# end:

Count: $foreach.count

и ожидал увидеть в полученном результате что-то вроде

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

но все, что я вижу, это:

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

Любые идеи, что я делаю неправильно?

Ответ 1

Ваш код является частичным, мы не видим директивы foreach.

Иначе я знаю, что цикл foreach имеет встроенную переменную с именем $counter, хотя в руководстве они ссылаются на $foreach.count

Ответ 2

Ни для меня не $foreach.count и $counter.

Этот ответ предлагает использовать $velocityCount, и это сработало для меня.

Ответ 3

Я пробовал с $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

Ответ 4

Я не знаю, почему встроенная переменная foreach loop, называемая $count, не работает в качестве руководства. Но $velocityCount работает для меня.

Существует свойство, называемое directive.foreach.counter.name - значение velocityCount в файле velocity.properties, поэтому переменная $count может не работать.

Ответ 5

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

Ответ 6

$velocityCount работает для меня, и я использую скорость 1.5 $foreach.count и $counter

Ответ 7

Переменная по умолчанию - SpeedCount, но вы можете изменить имя и начальное значение переменной (только в предыдущих версиях 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