2011-10-04 64 views
12

我正在使用速度1.7,并在一个foreach循环内我想打印计数。在模板中我有一个#的foreach /#结束部分以下字符串:

Count: $foreach.count 

,并期待在呈现的结果看到的东西像

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

,但我看到的是:

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

任何想法我做错了什么?

回答

7

你的代码是部分的,我们没有看到foreach指令。

否则,我知道foreach循环有一个内置变量称为$counter,虽然在引导他们参考$foreach.count

+3

在速度<1.7有配置使用“directive.foreach.counter计数器变量的名称的方法。 name = velocityCount“在初始化引擎的属性中(这是来自默认版本)。看起来他们已经删除了做这种改变的能力,并且已经命名为$ {foreach.counter}。 –

+1

是真的,感谢$ {syntax.precising} :) –

+0

我习惯于使用正式表示法......稍微详细些,但大部分暴露清晰度。 –

19

无论$foreach.count也不$counter为我工作。

This answer建议使用$velocityCount,它适用于我。

+1

尝试速度1.7! – yannisf

+0

这也适用于我。我们使用velocity 1.5,由于使用第三方框架,我们不能移动到1.7 –

6

我不知道为什么名为$ count的foreach循环内置变量不能作为引导参考。但$ velocityCount为我工作。

有一个名为directive.foreach.counter.name的属性是velocity.properties文件中的velocityCount,所以默认$ count变量可能不工作。

0

$velocityCount是我的作品和我使用速度1.5 $foreach.count & $counter

2

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 
5

我试着用$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