1

我有一个从数据库中获取的列表。列表中有 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:31,952 错误 VelocityEngine:43 - 模运算的左侧 ($couter) 具有空值。无法操作。/emailtemplates/diis_nem_issues_email.vm [第 47 行,第 20 列]

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

4

5 回答 5

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

谢谢你们的想法。

于 2012-10-02T17:24:11.977 回答
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<User> users = ...
params.put("users", users);

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

于 2013-10-14T05:16:06.743 回答
2

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

于 2012-10-12T13:24:04.983 回答
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
于 2012-10-02T07:26:00.333 回答
0

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

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

**couter** ->>>> **counter**
于 2013-08-03T18:30:55.287 回答