Velocity和$ foreach.count

yan*_*isf 17 java velocity template-engine

我正在使用速度1.7并在foreach循环中我想打印计数.在模板中,我在#foreach/#end部分中有以下字符串:

Count: $foreach.count
Run Code Online (Sandbox Code Playgroud)

并期望在渲染结果中看到类似的东西

Count: 1
...
Count: 2
...
Run Code Online (Sandbox Code Playgroud)

但我所看到的只是:

Count: $foreach.count
...
Count: $foreach.count
...
Run Code Online (Sandbox Code Playgroud)

有什么想法我做错了什么?

sum*_*ulb 27

既不是$foreach.count也不$counter适合我.

这个答案建议使用$velocityCount,它对我有用.


k.h*_*ali 10

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

另外,我知道foreach循环有一个内置变量$counter,尽管在他们指的引导中$foreach.count

  • 在Velocity <1.7中,有一种方法可以在初始化引擎的属性中使用"directive.foreach.counter.name = velocityCount"来配置计数器变量的名称(这是默认版本).看起来他们已经删除了执行此更改的功能,并将其命名为$ {foreach.counter}. (4认同)

小智 10

我试过用$counter&$foreach.count但这些都不适合我.

但是,$velocityCount标签工作及以下是示例.

输入代码:

#foreach($entry in $entries)    
    <p>In for Loop count is : $velocityCount</p>     
#end    
Run Code Online (Sandbox Code Playgroud)

输出:

In for Loop count is : 1

In for Loop count is : 2

In for Loop count is : 3
Run Code Online (Sandbox Code Playgroud)


Nag*_*eni 6

我不知道为什么称为$ count的foreach循环内置变量不能作为指南引用.但$ velocityCount对我有用.

在velocity.properties文件中有一个名为directive.foreach.counter.name的属性是velocityCount,因此默认的$ count变量可能无效.


Goo*_*oot 6

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
Run Code Online (Sandbox Code Playgroud)