Как получить счет на основе нуля в цикле Velocity foreach

Я пытаюсь получить счетчик с нулевым значением в директиве Velocity #foreach.

если я использую:

#foreach ($item in $list)
   item.getName() : $velocityCount
#end

i получит:

Fred : 1
Wilma : 2
Barney : 3

Но мне нужно:

Fred : 0
Wilma : 1
Barney : 2

Решение должно быть максимально простым с точки зрения скорости.

ИЗМЕНИТЬ:
Я могу использовать:

#foreach ($item in $list)
   #set( $num = $velocityCount - 1 ) //The white space in mandatory
   item.getName() : $num
#end

и он работает. Но я ищу более элегантное решение.

РЕДАКТИРОВАТЬ 2:
Мне нужен только один счетчик. То есть, в том же шаблоне я, скорее всего, буду иметь одну директиву #foreach, для которой потребуется счетчик с нулевым значением и другая директива #foreach, для которой требуется однобазовый счетчик.

Ответы

Ответ 1

Если вы используете Velocity 1.7, существуют специальные tars t20 > (0) и $foreach.count (1 на основе), доступные внутри циклов.

$velocityCount - это то, что было устаревшим давным-давно afaik.

Ответ 2

Согласно документ, вы можете указать:

directive.foreach.counter.initial.value = 0

В файле velocity.properties.

Ответ 3

#set($i = 0)

  #foreach($str in $names)
    #set($i = $i+1)
    $i : $str
 #end

Ответ 4

Ну, вы не можете обойти оба, очевидно - вам нужно либо просто выполнить математику, когда вы показываете, либо создать настраиваемую директивуздесь статья SO сообщения ссылки на). Например, вы могли бы иметь #forEachZeroBased и #forEachOneBased.

Пользовательские директивы очень полезны иногда, хотя ИМО это не один из них - просто сделайте математику, это очевидное решение, и это просто не так уж и важно.