如何迭代对象列表?

发布于 2024-08-30 22:15:19 字数 629 浏览 3 评论 0 原文

我有一个 User 类,其中有一个字符串用户名。我有一个用户列表,我尝试使用

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

这些行显示在表中正确的次数,因此它正确地迭代我的列表。但是,我不知道如何访问用户名属性来显示它。显然我上面的内容是不正确的......有什么想法吗?

I have a User class that has a String username in it. I have a list of users that I'm trying to display in a table using

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

The rows are being displayed the right number of times, so it's iterating through my list properly. However, I don't know how to access the username property to display it. Obviously what I have above isn't correct... Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

残疾 2024-09-06 22:15:19

首先,在 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>

更新:我更正了有关 # 的位,没关系。

First, in Struts2 2.1.x the id attribute is deprecated, var should be used instead (ref)

I think the # is misused there. Besides, "list" seems a bad name for what is to be assigned in each iteration... I think "user" is more appropiate.

IIRC, the syntax is

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

Further, you don't need to assign the current item in the iterator for such a simple case. THis should also work:

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

Also you might want to try this:

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

UPDATE: I corrected the bit about the #, it was ok.

人心善变 2024-09-06 22:15:19

你可以这样做

<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
我们没有指定 var 的范围,这个新的 user 引用存在于
默认的“动作”范围——ActionContext。尽你所能
看,然后我们用 # 运算符引用它。

You can do like this

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

Observe that no need of #list there.

The other way is

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

insetead of id give it as var.Since
we don’t specify a scope for var, this new user reference exists in
the default “action” scope—the ActionContext. As you can
see, we then reference it with the # operator.

时光无声 2024-09-06 22:15:19

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

You can use JSTL with Struts. It has a <c:forEach> tag in its core library that will allow you to iterate through a list or any other collection easily.

三生一梦 2024-09-06 22:15:19
<s:iterator value="users" var="eachUser">
<div>
 <s:property value="#eachUser.username">
</div>  
</s:iterator>  

检查以获取更多此类示例

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

Check this for more such examples

万劫不复 2024-09-06 22:15:19

Struts 1.x 像这样处理你的内部属性。

<逻辑:迭代 id="user" name="userList">
< bean:write属性=“${userName}”/>
< /逻辑:迭代>

我想按照你的例子你可以拥有。您可能不需要“#list”。再次在 value 属性中
< s:iterator value="users" id="list">
< s:property value="用户名" />
< /s:迭代器>

Struts 1.x takes care of your inner properties like this.

< logic:iterate id="user" name="userList">
< bean:write property="${userName}"/ >
< /logic:iterate>

I guess as per ur example u can have. You may not need "#list." again in the value attribute
< s:iterator value="users" id="list">
< s:property value="userName" />
< / s:iterator>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文