我有一个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属性来显示它。显然我上面所说的不正确......有什么想法吗?
答案 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;