我怎样才能在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}">
答案 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)