我正在使用Play框架并对模板有疑问:
我想使用list作为带有from和to变量的for循环:
#{list pages:results.startPage..results.endPage, as:'page'}
${page}
#{/list}
results.startPage和results.endPage都有有效值。我不 收到错误消息,但不显示输出。我是什么 做错了?
谢谢
答案 0 :(得分:0)
编辑:花了一些时间写一个大答案,你的代码中有一个错误!
在#list标记中,您应该有items
,而不是pages
。你的代码应该阅读。
#{list items:results.startPage..results.endPage, as:'page'}
${page}
#{/list}
对于那些对Groovy Range变量如何工作感兴趣的人,下面是一个描述,而不是我删除长答案!
我认为你以错误的方式使用范围方法。 for循环的Groovy Range构造允许您从一个值循环到另一个值。这通常是整数或字符串,而不是List。
因此,如果您执行以下操作,它将打印0到10
#{list items:0..10, as:'i'}
${i}
#{/list}
但是,可以在控制器中设置值。因此,如果要在控制器中使用start
和end
变量集(假设它们设置为0和10),则可以执行以下操作。
#{list items:start..end, as:'i'}
${i}
#{/list}
我的控制器测试该构造如下,它工作正常。
public static void index() {
int start = 0;
int end = 10;
render(start, end);
}
这将打印相同的0到10.即使我通过封装在类中发送这些变量,它仍然可以正常工作。
您确定startPage
和endPage
是整数值吗?