0

我怎样才能在 gsp 的 grails/groovy 中只踢 n 次 while 循环?这是我目前的做法:

%{-- <%= "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}">
4

2 回答 2

1

你也可以这样做:

<g:each var="foo" in="${ ((i-k)..k) }">
    ...
</g:each>
于 2013-07-30T18:17:56.413 回答
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)
于 2013-07-30T22:54:03.120 回答