2013-06-03 28 views
6

Tôi có một danh sách mà tôi đang quay lại chế độ xem.Playframework: Looping trên một danh sách

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

Tôi muốn lặp trên nó 3 tại một thời điểm để nó hiển thị như sau:

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

Tôi không thể tìm ra cách để làm điều này bằng cách sử dụng vòng lặp for.

Tôi có đoạn code Java cho điều này, chỉ cần không để dịch này để Play khung mẫu mã:

 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("---------------------"); 
     } 

Trả lời

10

này nên làm việc:

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

Dưới đây là một phiên bản Scala-esque hơn:

@(list: List[String]) 

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

(Phản hồi khác trả lời câu hỏi được hỏi trực tiếp hơn, đặc biệt là câu hỏi r có thể không được sử dụng Scala trong phần còn lại của dự án của mình).

+0

Bạn là chính xác. Tôi đang sử dụng Java và phản ứng của @Aerus cảm thấy tự nhiên hơn đến từ một nền Java. –

1

Dưới đây là một ví dụ làm việc,

@(list: List[String]) 

@for(value <- list){ 

} 
Các vấn đề liên quan