你如何遍历对象列表?

时间:2010-05-02 20:54:15

标签: struts2 iterator

我有一个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>

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

5 个答案:

答案 0 :(得分:18)

首先,在Struts2 2.1.x中,不推荐id属性,而应使用var代替ref

我认为#在那里被误用了。此外,“list”似乎是每次迭代中分配的错误名称......我认为“用户”更合适。

IIRC,语法是

 <s:iterator value="users" var="user">
  ...  <s:property value="#user.username" />
 </s:iterator>

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

 <s:iterator value="users">
  ...  <s:property value="username" />
 </s:iterator>

您也可以尝试这样做:

  <s:iterator value="users">
      ...  <s:property />      <!-- this outputs the full object, may be useful for debugging -->
  </s:iterator>

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

答案 1 :(得分:3)

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

答案 2 :(得分:3)

你可以这样做

<s:iterator value="users" >
<tr>
    <td><s:property value="username" /></td>
    <td></td>
    <td></td>
    <td></td>
</tr>

注意到那里不需要 #list

另一种方式是

<s:iterator value="users" var="user">
<tr>
    <td><s:property value="#user.username" /></td>
    <td></td>
    <td></td>
    <td></td>
</tr>

不依赖 id 将其设为 var .Since 我们没有指定var的范围,这个新的 用户 引用存在于 默认的“action”范围 - ActionContext。尽你所能 看,然后我们用#运算符引用它。

答案 3 :(得分:0)

<s:iterator value="users" var="eachUser">
<div>
 <s:property value="#eachUser.username">
</div>  
</s:iterator>  

查看this了解更多此类示例

答案 4 :(得分:-1)

Struts 1.x会照顾你的内在属性。

  &LT; logic:iterate id =“user”name =“userList”&gt;      &LT; bean:write property =“$ {userName}”/&gt;   &LT; /逻辑:迭代&GT;

我想根据你的例子,你可以拥有。您可能不需要“#list”。再次在value属性中 &LT; s:iterator value =“users”id =“list”&gt;                   &LT; s:property value =“userName”/&gt;  &LT; / s:iterator&gt;