在play框架中的模板中循环两个条件?

时间:2012-06-18 16:26:13

标签: groovy playframework template-engine

在playframework的视图模板中执行此操作的方法是什么?我用groovy标记,因为显然,播放模板引擎基于groovy。

%{ 
    for(int i=0, int j = 0; i < userdata.size(), j < user.size();i = i + 4, j++){
}%
<div style="text-align: center;">
<h3>
    ${foo.get(j)}
</h3>
</div>

如果这不可能,或仅仅是为了好奇:

我还尝试将foo作为散列映射传递,其密钥已存在于userdata中。我试过这样的事情,但无济于事:

${foo.each{ k, v -> println "${k}:${v}" }}

2 个答案:

答案 0 :(得分:2)

既然你在谈论groovy,我认为你正在使用playframework 1.x. Playframework 2使用scala模板。

您可以循环使用两种条件,就像您使用任何其他语言一样。语法略有不同。

爪哇:

for (int i = 0; i < 10; i++){
    for (int j = 0; j < 10; j++) {
        System.out.println(String.format("i: %d, j: %d", i, j));
    }
}

playframework模板:

#{list items:0..10, as:'i'}
    #{list items:0..10, as:'j'}
        <p>i: ${i}, j: ${j}</p>
    #{/list}
#{/list}

查看documentation for the #{list} tag

答案 1 :(得分:1)

使用播放模板内置标签,你无法做到这一点。此外,我还在play 1.2.4模板中使用带有多参数初始化的for循环编译失败。你可以使用while循环:

%{
    int j = 0, i = 0;
    while (i*i <= j) {
}%
        ${i}^2 <= ${j}
%{
        i++;
        j = j+2;
    }
}%
//prints
//0^2 <= 0
//1^2 <= 2
//2^2 <= 4