0

先生,我有一个更新我的数组列表的问题,连接 wd jsp n action servlet 沿着 wd form bean..

这是我的第一个 jsp 页面,我在其中显示列表:我想更新这个列表 wd servlet,其中 roll no 将是条件有帮助吗?

<%Iterator itr;%>
<% ArrayList data= (ArrayList)request.getAttribute("data");
    for (itr=data.iterator(); itr.hasNext(); )
    {


%>
    <tr>

        <td width="40"> <input type="text" value="<%=itr.next()%>"/></td>
        <td width="40"><input type="text"  name="th2" value="<%=itr.next()%>"/></td>
            <td width="40"><input type="text"  value="<%=itr.next()%>"/></td>
    <td width="40"><input type="text"  value="<%=itr.next()%>"/></td>
            <td width="40"><input type="text"  value="<%=itr.next()%>"/></td>
            <td width="40"><input type="text"  value="<%=itr.next()%>"/></td>

</tr>
<%}%>
4

1 回答 1

0

这不是迭代器的工作方式。iter.hasNext 指定是否还有更多元素。iter.next 前进到下一个。您正在调用 hasNext 一次,但接下来是 6 次。

你本质上是在问:“你有第一个元素吗?如果有,给我前 6 个。” 但是您可能只有 2 个元素,这将导致 IndexOutOfBoundsException。

foreach 循环语法会自动为您获取一个迭代器,从而减少您的代码。

尝试这个:

<% for (Object o : (ArrayList)request.getAttribute("data"))
   {
%>
    <tr>

        <td width="40"> <input type="text" value="<%=o %>"/></td>
        <td width="40"><input type="text"  name="th2" value="<%=o %>"/></td>
        <td width="40"><input type="text"  value="<%=o %>"/></td>
        <td width="40"><input type="text"  value="<%=o %>"/></td>
        <td width="40"><input type="text"  value="<%=o %>"/></td>
        <td width="40"><input type="text"  value="<%=o %>"/></td>

</tr>
<% } %>
于 2013-07-24T19:27:36.407 回答