Grails - 使用gsp测试集合中的第一个元素

时间:2009-10-28 09:48:14

标签: grails gsp

有没有人知道如何测试gsp循环中的第一个成员和最后一个成员?

这是我的jsp代码:

<c:forEach items='${aSet}' var='elem' varStatus="loop">
   <c:if test='${loop.first}'>
      <p>Display something</p>
   </c:if>
</c:forEach>

我知道你可以在g:each语句中测试状态,但这只是一个整数。有没有东西可以访问第一个和最后一个元素?如果没有,还有另一种方法可以做我正在做的事情吗?

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:7)

我不确定<g:each status>的问题是什么。是的,它只是一个整数,但不是你想要的那样吗?

<g:each in="${aSet}" var="elem" status="i">
    <g:if test="${i == 0}">
        <p>Display something for first element</p>
    </g:if>
    <p>Stuff that is always displayed</p>
    <g:if test="${i == aSet.size() - 1}">
        <p>Display something for last element</p>
    </g:if>
</g:each>

答案 1 :(得分:2)

这个问题有点旧,但执行此检查的另一种方法是使用Groovy List的first()方法。你也可以使用Groovy List的last()方法为最后一个元素做同样的事情。

list.first()

<g:forEach items='${aSet}' var='elem' varStatus="loop">
   <g:if test='${elem == aSet.first()}'>
      <p>Display something for first element</p>
   </g:if>
</g:forEach>

list.last()

<g:forEach items='${aSet}' var='elem' varStatus="loop">
   <g:if test='${elem == aSet.last()}'>
      <p>Display something for last element</p>
   </g:if>
</g:forEach>