Ответ 1
Если вы используете Velocity 1.7, существуют специальные tars t20 > (0) и $foreach.count
(1 на основе), доступные внутри циклов.
$velocityCount
- это то, что было устаревшим давным-давно afaik.
Я пытаюсь получить счетчик с нулевым значением в директиве 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
, для которой требуется однобазовый счетчик.
Если вы используете Velocity 1.7, существуют специальные tars t20 > (0) и $foreach.count
(1 на основе), доступные внутри циклов.
$velocityCount
- это то, что было устаревшим давным-давно afaik.
Согласно документ, вы можете указать:
directive.foreach.counter.initial.value = 0
В файле velocity.properties.
#set($i = 0)
#foreach($str in $names)
#set($i = $i+1)
$i : $str
#end
Ну, вы не можете обойти оба, очевидно - вам нужно либо просто выполнить математику, когда вы показываете, либо создать настраиваемую директиву (и здесь статья SO сообщения ссылки на). Например, вы могли бы иметь #forEachZeroBased
и #forEachOneBased
.
Пользовательские директивы очень полезны иногда, хотя ИМО это не один из них - просто сделайте математику, это очевидное решение, и это просто не так уж и важно.