如何使用foreach循环在Velocity中获取列表元素以显示为表格

时间:2012-10-02 05:48:55

标签: list foreach velocity

我有一个从数据库中获取的列表。我在列表中有6个元素

 List<String> list=new ArrayList<String>();
 list.add("No Connection");
 list.add("sep 24 ,2009");
 list.add("no issues are there");
 list.add("dec 30,2012");
 list.add("no meter");
 list.add("april 12,2013");


map.put("list",list);

我正在使用Velocity模板。在那里我使用foreach循环来获取列表项。我必须在表中显示第一个单元格中的两个单元格偶数索引中的三个元素应该显示,而第二个单元格中应该显示奇数索引。如何做到。< / p>

#foreach($mylist in $list)
    <td>even indexed list elements in my list</td>
    <td align="center">odd indexed elements in the list.</td>
    #end

更新

我试过这样但是它不起作用。这是获得速度索引的正确方法。

#set ($counter = 0)
#foreach ($i in $descList)
    #set ($counter = $counter + 1)
    #if ( $couter % 2 == 0)
        <td>$descList[$i]</td>
        <td align="center"></td>
    #else
        <td></td>
        <td align="center">$descList[$i+1]</td>
    #end
#end

我收到了以下错误。

07:53:31,952 ERROR VelocityEngine:43 - 模数运算的左侧($ couter)具有空值。操作不可能。 /emailtemplates/diis_nem_issues_email.vm [第47行,第20栏]

07:53:31,953 ERROR VelocityEngine:43 - '=='操作的左侧(2)具有空值。如果是引用,则可能不在上下文中。操作不可能。 /emailtemplates/diis_nem_issues_email.vm [第47行,第25栏]

5 个答案:

答案 0 :(得分:4)

我通过在我的应用程序中使用哈希表而不是在我的应用程序中使用List来解决此问题

#foreach( $key in $hashtab.keySet() )
 <tr><td>$key</td><td align="center">$hashtab.get($key)</td></tr>
#end

在我的java课程中我喜欢这个

HashTable<String,Date> hashtab=new HashTable<String,Date>();
hashtab.put(key,value);

谢谢你的想法。

答案 1 :(得分:4)

我正在使用这个适用于我的代码段:

#set( $count = 1 )
<p>User details:</p>
<table>
    #foreach( $user in $users)
        <tr>
            <td>$count</td>
            <td>$user.username</td>
            <td>$user.age</td>
        </tr>
        #set( $count = $count + 1 )
    #end
</table>

其中'$ users'是我在java中设置的List,如下所示:

List<User> users = ...
params.put("users", users);

我在这里找到了这些解决方案:http://thinkinginsoftware.blogspot.com.ar/2010/03/velocity-templates-for-email.html

答案 2 :(得分:1)

据我记得你可以这样做:

#set ($counter = 0)
#foreach ($mylist in $list)
    #set ($counter = $counter + 1)
    #if ( $couter % 2 == 0)
        <td>even indexed result</td>
        <td align="center"></td>
    #else
        <td></td>
        <td align="center">odd index result</td>
    #end
#end

答案 3 :(得分:1)

问题是你有一个错字:couter而不是counter

答案 4 :(得分:0)

代码中存在一个小错误,如下所示:

if ( $**couter** % 2 == 0)

**couter** ->>>> **counter**