循环一定次数后如何做grails

时间:2013-04-18 16:28:42

标签: grails

我怎样才能在gsp旁边的grails / groovy中进行n次循环? 这是我目前的做法:

%{-- <%= "It's groovy, man".take(88)    %> --}%

    <g:set var="i" value="${messages.size()}"/>
    <g:set var="x" value="<%= i - 3 %>/>"
    <g:while test="${i > x}">
    <g:set var="i" value="${i-1}"/>
      ... fancy html here
      <%= messages[i].name %>
    </g:while>

解决方案:

  <g:set var="i" value="${messages.size()}"/>
    <g:set var="k" value="${i-3}"/>
    <g:while test="${i > k}">

2 个答案:

答案 0 :(得分:1)

你也可以这样做:

<g:each var="foo" in="${ ((i-k)..k) }">
    ...
</g:each>

答案 1 :(得分:1)

所以这就是我要做的。这假设您想要获取列表中的最后X项,这是我想问的问题,尽管不是很清楚。这也是假设消息是一个列表。

<g:set var="length" value="${messages.size()}" />
<g:each in="${messages.getAt((Math.min(length,3)*-1)..-1)}" var="message">
... fancy html here
      <%= message.name %>
</g:each>

以下是我为确认这一点所做的测试:

def list = [1,2]
def x = list.size()
assert [1,2] == list.getAt((Math.min(x,3)*-1)..-1)
list = [1,2,3]
x = list.size()
assert [1,2,3] == list.getAt((Math.min(x,3)*-1)..-1)
list = [1,2,3,4]
x = list.size()
assert [2,3,4] == list.getAt((Math.min(x,3)*-1)..-1)