1

在 playframework 的视图模板中执行此操作的方法是什么?我已经用 groovy 进行了标记,因为显然,play 模板引擎是基于 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 作为 hashmap 传递,其键已经存在于 userdata 中。我尝试了这样的事情但无济于事:

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

4

2 回答 2

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

游戏框架模板:

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

查看#{list} 标签的文档

于 2012-06-18T18:52:22.490 回答
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
于 2012-06-19T12:19:17.893 回答