【问题标题】:Velocity and $foreach.count速度和 $foreach.count
【发布时间】:2011-11-30 12:59:02
【问题描述】:

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

Count: $foreach.count

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

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

但我看到的只是:

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

任何想法我做错了什么?

【问题讨论】:

  • 能否请您添加完整的 foreach 语句?

标签: java velocity template-engine


【解决方案1】:

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

另外,我知道 foreach 循环有一个名为 $counter 的内置变量,尽管在指南中它们确实引用了 $foreach.count

【讨论】:

  • 在 Velocity
  • 我习惯于使用正式的符号……有点冗长,但大部分情况下都是为了清晰。
  • 我正在使用速度引擎 2.1 并且 ${foreach.count} 有效。
【解决方案2】:

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

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

【讨论】:

  • 这对我也有用。我们正在使用velocity 1.5,由于使用了第三方框架,我们无法迁移到1.7
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    $velocityCount 适合我,我正在使用速度 1.5 $foreach.count & $counter

    【讨论】:

      【解决方案5】:

      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
      

      【讨论】:

      • 这个答案更有意义。谢谢!
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        默认变量为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

        【讨论】:

          【解决方案8】:

          我目前正在像这样格式化我的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>
          

          输出

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-09
            • 2012-12-14
            • 2010-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多