Sid*_*rth 1 jsp iterator struts2
我使用以下命令显示'userList'中的值
<s:iterator value="userList" status="rowStatus">
<tr class="even">
<td><s:property value="tweet_id" /></td>
<td><s:property value="message" /></td>
<td><s:property value="created" /></td>
</tr>
</s:iterator>
Run Code Online (Sandbox Code Playgroud)
什么是使用status="rowStatus"这个命令?
来自docs.
迭代器标记可以导出IteratorStatus对象,以便可以获取有关迭代状态的信息,例如:
Run Code Online (Sandbox Code Playgroud)index: current iteration index, starts on 0 and increments in one on every iteration count: iterations so far, starts on 1. count is always index + 1 first: true if index == 0 even: true if (index + 1) % 2 == 0 last: true if current iteration is the last iteration odd: true if (index + 1) % 2 == 1
例
<s:iterator status="rowStatus" value='{0, 1}'>
Index: <s:property value="%{#rowStatus.index}" /> <br />
Count: <s:property value="%{#rowStatus.count}" /> <br />
</s:iterator>
Run Code Online (Sandbox Code Playgroud)
将打印
Index: 0
Count: 1
Index: 1
Count: 2
Run Code Online (Sandbox Code Playgroud)
在您的userList中
userList count = 1 to userList.size();
userList index = 0 to userList.size() - 1;
Run Code Online (Sandbox Code Playgroud)
在你的情况下,没有。
迭代时,当前对象被推到值堆栈的顶部。这意味着您可以通过简单地使用它的名称(以及许多其他方式)来访问它。
您可以根据需要将此值用于value属性。
但是,如果(在与您的情况不同的情况下,但您肯定很快会遇到)您需要将此值放在将提交回(其他) Action的表单字段中,以List<YourObject>属性为目标,那么您需要使用 IteratorStatus挂载正确的name属性。例如:
源动作
private List<User> sourceUserList;
Run Code Online (Sandbox Code Playgroud)
目标动作
private List<User> updatedUserList;
Run Code Online (Sandbox Code Playgroud)
JSP
<s:form action="targetAction">
<s:iterator value="sourceUserList" status="rowStatus">
<s:hidden name="updatedUserList[%{#rowStatus.index}].id" value="id"/>
<s:property value="id" />
<s:textfield name="updatedUserList[%{#rowStatus.index}].name" value="name" />
<s:textfield name="updatedUserList[%{#rowStatus.index}].age" value="age" />
</s:iterator>
<s:submit/>
</s:form>
Run Code Online (Sandbox Code Playgroud)
知道了 ?
| 归档时间: |
|
| 查看次数: |
16107 次 |
| 最近记录: |