2013-06-03 7 views
6

私はリストに戻り、ビューに戻っています。Playframework:リストのルーピング

public static Result index() { 

     List<String> list = new ArrayList<String>(); 
     list.add("idea 1"); 
     list.add("idea 2"); 
     list.add("idea 3"); 
     list.add("idea 4"); 
     list.add("idea 5"); 
     list.add("idea 6"); 
     list.add("idea 7"); 

     return ok(index.render(list)); 
} 

私はそれがそのようにように表示されますよう時点で3を反復したい:私はforループを使用して、これを行う方法を見つけ出すことができないんだ

<ul> 
    <li>idea 1</li> 
    <li>idea 2</li> 
    <li>idea 3</li> 
</ul> 
<ul> 
    <li>idea 4</li> 
    <li>idea 5</li> 
    <li>idea 6</li> 
</ul> 
<ul> 
    <li>idea 7</li> 
</ul> 

私がプレイフレームワークテンプレートコードにこれを翻訳するだけででき、このためのJavaコードを、持っている:

 int size = list.size(); 
     int loopSize = (int) Math.ceil(size/3.0); 
     int counter = 0; 

     for(int j = 0 ; j < loopSize; j++) { 

      System.out.println("---------------------");    

      for (int i = 0; i < 3; i++) { 
       if(counter < size) { 
        System.out.println(list.get(counter)); 
        counter++; 
       } else { 
        break; 
       } 
      } 

      System.out.println("---------------------"); 
     } 

答えて

10

これは動作するはずです:

@(list: List[String]) 

@for(index <- 0 until list.size){ 
    @if(index % 3 == 0){ 
     <ul> 
    } 

    <li>@list(index)</li> 

    @if(index % 3 == 2 || index == (list.size - 1)){ 
     </ul> 
    } 
} 
8

ここよりScalaの風のバージョンがあります:

@(list: List[String]) 

@list.grouped(3).map { group => 
    <ul> 
    @group.map { item => 
    <li>@item</li> 
    } 
    </ul> 
} 

(もう1つの回答は質問に直接答えます。 rは、残りのプロジェクトでScalaを使用していない可能性があります)。ここで

+0

実施例です。私はJavaを使用しています。@ Aerusによる応答は、Javaのバックグラウンドからの自然な感じです。 –

1

は、あなたが正しい、

@(list: List[String]) 

@for(value <- list){ 

}