web-dev-qa-db-ja.com

速度テンプレートで「for」ループを使用するにはどうすればよいですか?

私は「forループ」をググっただけですが、速度には「foreach」しかありません。

速度テンプレートで「forループ」を使用するにはどうすればよいですか?

24
Moon

だけあります #foreach。あなたはあなたの文脈に反復可能な何かを置かなければならないでしょう。例えば。 barを配列またはCollectionで使用できるようにします。

#foreach ($foo in $bar)
    $foo
#end

または、数値の範囲を反復処理する場合:

#foreach ($number in [1..34])
    $number
#end
35
WhiteFang34

Foreachループ内の反復情報にアクセスするには、特別な$foreachプロパティからアクセスできます。

#foreach ($foo in $bar)
    count: $foreach.count
    index: $foreach.index
    first: $foreach.first 
    last:  $foreach.last
#end

(私がlastを確認した前回はバグが含まれていました)

39
serg

リストをループしようとしたときに解決策を見つけました。リストを別のクラスに置き、リストobjのゲッターとセッターを作成します。例えば

public class ExtraClass {
    ArrayList userList = null;

    public ExtraClass(List l) {
        userList = (ArrayList) l;
    }

    public ArrayList getUserList() {
        return userList;
    }

    public void setUserList(ArrayList userList) {
        this.userList = userList;
    }

}

次に、速度コンテキストの場合、Extraclassを入力として入力します。例えば。

  ExtraClass e = new ExtraClass(your list);
VelocityContext context = new VelocityContext();

context.put( "data"、e);テンプレート内

#foreach ($x in $data.userList)
        $x.fieldname    //here $x is the actual obj inside the list
    #end
6
Sarbe97