【问题标题】:Playframework: Looping over a listPlayframework:循环列表
【发布时间】:2013-06-03 19:17:16
【问题描述】:

我有一个要传回视图的列表。

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 代码,只是无法将其转换为 Play 框架模板代码:

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

【问题讨论】:

    标签: templates for-loop playframework-2.1


    【解决方案1】:

    这应该可行:

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

    【讨论】:

    • 也可以使用@for((str, idx) &lt;- list.zipWithIndex)访问每个循环的idxString
    【解决方案2】:

    这是一个更 Scala 风格的版本:

    @(list: List[String])
    
    @list.grouped(3).map { group =>
      <ul>
      @group.map { item =>
        <li>@item</li>
      }
      </ul>
    }
    

    (另一个回答更直接地回答了这个问题,特别是因为提问者可能不会在他的项目的其余部分使用 Scala)。

    【讨论】:

    • 你是对的。我正在使用 Java,@Aerus 的回复感觉来自 Java 背景更自然。
    【解决方案3】:

    这是一个工作示例,

    @(list: List[String])
    
    @for(value <- list){
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 2021-11-25
      • 1970-01-01
      • 2016-02-25
      • 2012-08-05
      • 1970-01-01
      • 2013-03-10
      • 2011-08-03
      • 2020-07-09
      相关资源
      最近更新 更多