2013-06-03 98 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:

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

我無法弄清楚如何使用for循環來做到這一點。

我的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

這裏有一個更斯卡拉式的版本:

@(list: List[String]) 

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

(其他回答更直接地回答問題,特別是作爲問題r可能不會在他的項目的其餘部分使用Scala)。

+0

你是正確的。我正在使用Java,@Aerus的迴應感覺來自Java背景的更自然。 –

1

這裏是一個工作示例,

@(list: List[String]) 

@for(value <- list){ 

}