我正在使用velocity 1.7,在foreach循环中我想要打印计数器。在模板中,我有以下字符串在#foreach/#end部分:
Count: $foreach.count
我期望在渲染出的结果中看到类似于以下内容:
Count: 1
...
Count: 2
...
但是我看到的只有:
Count: $foreach.count
...
Count: $foreach.count
...
我做错了什么?有什么想法吗?
我正在使用velocity 1.7,在foreach循环中我想要打印计数器。在模板中,我有以下字符串在#foreach/#end部分:
Count: $foreach.count
我期望在渲染出的结果中看到类似于以下内容:
Count: 1
...
Count: 2
...
但是我看到的只有:
Count: $foreach.count
...
Count: $foreach.count
...
我做错了什么?有什么想法吗?
对我来说,$foreach.count
和$counter
都没有起作用。
这个答案建议使用$velocityCount
,对我起了作用。
您的代码是不完整的,我们没有看到foreach指令。
另外,我知道foreach循环有一个内置变量称为$counter
,尽管在指南中他们提到了$foreach.count
。
我试过使用 $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
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
我不知道为什么内置的 foreach 循环变量 $count 不像引用中说的那样起作用,但 $velocityCount 对我有效。
在 velocity.properties 文件中有一个叫做 directive.foreach.counter.name 的属性,它的值是 velocityCount,所以默认的 $count 变量可能无法使用。
我目前正在格式化我的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>
输出
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
$foreach.count
(从1
开始)和$foreach.index
(从0
开始)与Velocity 2.3一起使用可以工作。
文档中提到了更多可用的循环变量。
$velocityCount
对我有用,我正在使用 velocity 1.5 $foreach.count
和 $counter