你如何遍历对象列表?

Kev*_*vin 11 iterator struts2

我有一个User类,其中包含一个String用户名.我有一个用户列表,我试图在表中使用

                         <s:iterator value="users" id="list">
                                <tr>
                                    <td><s:property value="#list.username" /></td>
                                    <td></td>
                                    <td></td>
                                    <td></td>
                                </tr>
                         </s:iterator>
Run Code Online (Sandbox Code Playgroud)

行正在显示正确的次数,因此它正在迭代我的列表.但是,我不知道如何访问username属性来显示它.显然我上面所说的不正确......有什么想法吗?

leo*_*loy 18

首先,在Struts2 2.1.x id中不推荐使用该属性,var应该使用(ref)

我认为#在那里被误用了.此外,"列表"似乎是每次迭代中要分配的内容的坏名称...我认为"用户"更合适.

IIRC,语法是

 <s:iterator value="users" var="user">
  ...  <s:property value="#user.username" />
 </s:iterator>
Run Code Online (Sandbox Code Playgroud)

此外,您不需要在迭代器中为这样一个简单的大小写分配当前项.这应该也有效:

 <s:iterator value="users">
  ...  <s:property value="username" />
 </s:iterator>
Run Code Online (Sandbox Code Playgroud)

您也可以尝试这样做:

  <s:iterator value="users">
      ...  <s:property />      <!-- this outputs the full object, may be useful for debugging -->
  </s:iterator>
Run Code Online (Sandbox Code Playgroud)

更新:我纠正了关于#的一点,没关系.


duf*_*ymo 2

您可以将 JSTL 与 Struts 一起使用。它的核心库中有一个<c:forEach>标签,可让您轻松地迭代列表或任何其他集合。