Velocity和$ foreach.count

时间:2011-10-04 09:27:08

标签: java velocity template-engine

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

Count: $foreach.count

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

的内容
Count: 1
...
Count: 2
...

但我看到的只有:

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

任何想法我做错了什么?

8 个答案:

答案 0 :(得分:23)

$foreach.count$counter都不适合我。

This answer建议使用$velocityCount,这对我有用。

答案 1 :(得分:9)

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

否则,我知道foreach循环有一个名为$counter的内置变量,虽然在指南中它们引用了$foreach.count

答案 2 :(得分:9)

我试过$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

答案 3 :(得分:6)

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

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

答案 4 :(得分: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 :(得分:1)

默认变量是VelocityCount,但是您可以根据需要更改变量名称和初始值(仅在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

答案 6 :(得分:0)

$velocityCount对我有用,我使用的是速度1.5 $foreach.count&amp; $counter

答案 7 :(得分:0)

我目前正在像这样格式化我的 email_html.vm

注意,我正在使用

#set( $count = 1 )#set( $count = $count + 1 )

<html>
<body>
<table style="border: 1px solid black; border-collapse: collapse">
    #set( $count = 1 )
    #foreach( $film in $filmList )
        <tr>
            <td colspan=2 style="background: bisque; text-align: center"><b>Movie $count</b></td>
        </tr>
        <tr>
            <th style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left">Title</th>
            <td style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left"> $film.getTitle() </td>
        </tr>
        <tr>
            <th style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left">Synopsis</th>
            <td style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left"> $film.getSynopsis() </td>
        </tr>
        <tr>
            <th style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left">Trailer</th>
            <td style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left"> $film.getTrailerLink() </td>
        </tr>
        <tr>
            <th style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left">More Information</th>
            <td style="border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: left">
                https://www.landmarktheatres.com/$film.getMoreInfoLink() </td>
        </tr>
        #set( $count = $count + 1 )
    #end
</table>
</body>
</html>

输出

enter image description here