使用列表模板标签的开始/结束变量

发布于 2024-11-04 17:42:53 字数 281 浏览 1 评论 0原文

我正在使用 Play Framework,并对模板有疑问:

我想使用 list 作为带有 from 和 to 变量的 for 循环:

#{list pages:results.startPage..results.endPage, as:'page'} 
${page} 
#{/list} 

results.startPage 和 results.endPage 都有有效值。我不 收到错误消息,但不显示任何输出。我是什么 做错了吗?

谢谢

I'm using the Play Framework and have a question about templates:

I want to use list as a for loop with from and to variables:

#{list pages:results.startPage..results.endPage, as:'page'} 
${page} 
#{/list} 

Both results.startPage and results.endPage have valid values. I don't
receive an error message, however no output is displayed. What am I
doing wrong?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丑疤怪 2024-11-11 17:42:53

编辑:在花时间写了一个大答案之后,您的代码中有一个错误!
在 #list 标记中,您应该有 items,而不是 pages。您的代码应该可以读取。

#{list items:results.startPage..results.endPage, as:'page'} 
${page} 
#{/list} 

对于那些对 Groovy Range 变量如何工作感兴趣的人,下面是一个描述,而不是我删除长答案!

我认为您使用范围方法的方式是错误的。 for 循环的 Groovy Range 构造允许您从一个值循环到另一个值。这通常是整数或字符串,而不是列表。

因此,如果执行以下操作,它将打印 0 到 10

#{list items:0..10, as:'i'}
    ${i}
#{/list}

但是,可以在控制器中设置这些值。因此,如果您想使用控制器中设置的 startend 变量(假设它们设置为 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。即使我通过封装在类中发送这些变量,它仍然可以正常工作。

您确定 startPageendPage 是整数值吗?

EDIT: After spending the time writing a big answer, there is a bug in your code!
In your #list tag, you should have items, and not pages. Your code should read.

#{list items:results.startPage..results.endPage, as:'page'} 
${page} 
#{/list} 

For those interested in how the Groovy Range variable works, below is a description, rather than me delete the long answer!

I think you are using the range method in the wrong way. The Groovy Range construct for the for loop, allows you to loop from one value to another value. This is generally a integer or a string, and not a List.

So, if you do the following, it will print 0 to 10

#{list items:0..10, as:'i'}
    ${i}
#{/list}

However, the values can be set in your controller. So if you want to use a start and end variable set in your controller (assume they are set to 0 and 10), you can do the following.

#{list items:start..end, as:'i'}
    ${i}
#{/list}

My controller to test that construct is as follows, and it works fine.

public static void index() {
    int start = 0;
    int end = 10;

    render(start, end);
}

This will print the same 0 to 10. Even if I send these variables through encapsulated in a class, it still works fine.

Are you sure that startPage and endPage are integer values?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文