如何获取Struts2中的最后一个元素迭代器

6

我希望能够通过Struts 2仅展示迭代器的最后一个元素的想法。

我有这段代码:

<s:iterator value="listuser"  status="userStatus">
<tr class="<s:if test="#userStatus.odd == true ">odd</s:if><s:else>even</s:else>">
<td><s:property value="nameuser" /></td>
//  and others
</s:iterator>

为什么?用Java代码完成这项工作。 - Dave Newton
我想说的是“不要在视图层面做这件事”。你可以通过OGNL访问它,例如listuser.{$ #this instanceof User },但在我看来,这是一个可怕的想法,有多个原因。 - Dave Newton
@stoner 当迭代器完成时,您总是可以获取最后一个元素。 - Roman C
@ Roman C 我该怎么做?我在查询中进行了更改,以获取列表中的所有元素,但是它不起作用。现在我只能一个一个地获取最后一个。 - stoner
@stoner 查询语句的语法有误,迭代器标签不知道集合的实际类型是什么。 - Roman C
显示剩余3条评论
2个回答

11

Struts2迭代器状态不仅提供奇数和偶数方法,还提供了last和first方法。

<s:iterator value="listuser"  status="userStatus">
  <s:if test="#userStatus.last == true ">
    <td><s:property value="nameuser" /></td>
  </s:if>
</s:iterator>

5

这样做就可以达到目的:

<s:if test="#userStatus.index==listuser.size()-1">
           //Show the last element here
</s:if>

[更新]

根据Quaternion的评论,以下是一行代码获取它的方法:

 <s:set name="lastUser" value="listuser[listuser.size()-1]"/>

在上面,我们设置了lastUser中的最后一个元素。以下是如何在同一页其他地方使用它的方法。

  <s:property value="#lastUser.name"/>

1
这太糟糕了,你只为一个值循环遍历了所有的值? - Quaternion
1
要一次性获取最后一个元素(是否应该使用 OGNL),可以这样做:<s:set name="lastUser" value="listuser[listuser.size()-1]"/> 未经测试。 - Quaternion
没问题,因为我现在在其他地方使用了相同的列表,所以没事了。非常感谢你。 - stoner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接