List 如何使用foreach循环以表格形式显示Velocity中的列表元素

List 如何使用foreach循环以表格形式显示Velocity中的列表元素,list,foreach,velocity,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"); ma

我有一个从数据库中得到的列表,列表中有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);
我使用的速度模板。因为我使用foreach循环来获取列表项。我必须在表中显示两个单元格,第一个单元格中应显示偶数索引中的三个元素,第二个单元格中应显示奇数索引。如何做到这一点

#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:31952错误速度引擎:43-模运算的左侧$couter具有空值。操作不可能/emailtemplates/diis_nem_issues_email.vm[第47行,第20列]


07:53:31953错误速度引擎:43-“==”操作的左侧2具有空值。如果是引用,它可能不在上下文中。操作不可能/emailtemplates/diis_nem_issues_email.vm[第47行第25列]

据我所知,您可以这样做:

#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
List<User> users = ...
params.put("users", users);

据我所知,你可以这样做:

#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
List<User> users = ...
params.put("users", users);

我在应用程序中使用哈希表而不是列表解决了这个问题

#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);

谢谢大家的想法。

我在应用程序中使用哈希表而不是列表解决了这个问题

#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);

谢谢大家的想法。

问题是您的输入错误:couter而不是counter。

问题是您的输入错误:couter而不是counter。

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

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

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

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

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

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

我正在使用这个对我有用的片段:

#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中设置的列表,如下所示:

#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
List<User> users = ...
params.put("users", users);

我在这里找到了这些解决方案:

我正在使用适合我的代码片段:

#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中设置的列表,如下所示:

#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
List<User> users = ...
params.put("users", users);

我在这里找到了这些解决方案:

是的,但您不需要计数器。Velocity附带一个功能:只需使用$foreach.index而不是$counter,出于好奇,我们不需要做count++吗?你能告诉我如何将偶数和奇数索引放入那些td中吗。我和velocity模板语言不太相似。是的,但你不需要计数器。Velocity附带一个功能:只需使用$foreach.index而不是$counter,出于好奇,我们不需要做count++吗?你能告诉我如何将偶数和奇数索引放入那些td中吗。我与velocity模板语言不太相似。使用HashTable如何/为什么解决这个问题?这是并发问题吗?在VelocityEngine中,列表中的元素间歇性地无法解析时,也会发生类似的情况。我使用哈希表,因为我必须以表格格式显示一些相关数据,如created by、created date。因此,一旦我从代码中获得这些值,我将把这两个值放在映射中,并发送到Velocity模板以提取映射的键和值。基本上,如果完全符合我的要求。您遇到的确切问题是什么?我正在做一些类似的事情,我需要Velocity从Map Hashmap实现填充值。偶尔,200-300个随机值中的1个会解析为null。当我检查数据库时,输入Velocity模板的记录没有任何遗漏/不同之处。我不确定当提供映射时,Velocity引擎是否存在并发性问题,因此我切换到使用ConcurrentHashMap。我希望这能解决我难以测试的问题,因为这只发生在生产环境中。使用HashTable是如何/为什么解决这个问题的?这是并发问题吗?在VelocityEngine中,列表中的元素间歇性地无法解析时,也会发生类似的情况。我使用哈希表,因为我必须以表格格式显示一些相关数据,如created by、created date。因此,一旦我从代码中获得这些值,我将把这两个值放在映射中,并发送到Velocity模板以提取映射的键和值。基本上,如果完全符合我的要求。您遇到的确切问题是什么?我正在做一些类似的事情,我需要Velocity从Map Hashmap实现填充值。偶尔,200-300个随机值中的1个会解析为null。当我检查数据库时,输入Velocity模板的记录没有任何遗漏/不同之处。我不确定当提供映射时,Velocity引擎是否存在并发性问题,因此我切换到使用ConcurrentHashMap。我希望这能解决我难以测试的问题,因为这只发生在生产环境中。它有效-你只是有一个输入错误:couter而不是counter-。-“它有效-你只是有一个输入错误:couter而不是counter-。-”