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

Velocityテンプレートを使用しています。その中で、foreachループを使用してリストアイテムを取得しています。最初のセルに2つのセルがあり、偶数インデックスの3つの要素が表示され、2番目のセルに奇数インデックスが表示されるテーブルに表示する必要があります。これを行うにはどうすればよいですか。

#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)の値がnullです。操作できません。/emailtemplates/diis_nem_issues_email.vm [47行、20列]

07:53:31,953エラーVelocityEngine:43-'=='操作の左側(2)にnull値があります。参照の場合、コンテキストに含まれていない可能性があります。操作できません。/emailtemplates/diis_nem_issues_email.vm[47行25列]

4

5 に答える 5

4

アプリケーションでリストの代わりにハッシュテーブルを使用することで、この問題を解決しました

#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 に答える