开发者

Using variables for start/end with the list template tag

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.开发者_StackOverflowendPage, 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


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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜