在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}" }}
答案 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}
答案 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