当前位置:编程学习 > JAVA >>

jstl将从action中接收的list遍历输出到表格中,然后用button删除单条数据,却只能取到最后一条

我觉得是只取到了最后一条数据,这个不像jsp标签可以有标识,怎么取到每行对应到的值呢?<table border="1" cellSpacing="0" cellPadding="0">
<tr>
<td width="50" align="center">
id
</td>
<td width="50" align="center">
name
</td>
<td width="100" align="center">
password
</td>
<td width="100" align="center">
method
</td>
</tr>
<c:forEach items="${requestScope.list}" var="users">//接受并遍历action中的list

<tr>
<td width="50" align="center">
<c:out value="${users.id}" />
</td>
<td width="100" align="center">
<!--<c:out value="${users.userpassword}" />-->
<input type="text" value="${users.username}" id="username">
</td>
<td width="100" align="center">
<!--<c:out value="${users.userpassword}" />-->
<input type="text" value="${users.userpassword}" id="userpassword">
</td>
<script type="text/javascript">//删除方法,向deleteAction中传入id
function realyDelete() {
if (confirm("确定删除?"))
location.href = 'deleteAction.action?id=${users.id}';
}

function realyUpdate() {//更改方法,向updateAction中传入id跟text中的value
if (confirm("确定更改?"))
var n=document.getElementById('username').value;
var p=document.getElementById('userpassword').value;
location.href = 'updateAction.action?id=${users.id}&username='+n+'&userpassword='+p+'';
}

function realy() {
location.href = 'deleteAction.action?id=${users.id}';
}
</script>
<td>
<table>
<tr>
<td>
<input type="button" value="delete" onclick="realyDelete()"/>//删除按钮
</td>
<td>
<input type="button" value="update" onclick="realyUpdate()">//更新按钮
</td>
<td>
<input type="button" value="add" onclick="">
</td>
</tr>
</table>
</td>
</tr>
</c:forEach>
</table>
--------------------编程问答-------------------- 求帮忙想想办法怎么传每个按键对应的值? --------------------编程问答-------------------- 是显示只有一条数据还是删除只能删除最后一条数据? --------------------编程问答-------------------- 是只能删除最后一条 --------------------编程问答-------------------- c标签有个Status --------------------编程问答-------------------- c标签有个varStatus="a" 取得话a.index就可以了  --------------------编程问答-------------------- 你把每条的id传给对应的删除和更新方法就行了呗 --------------------编程问答-------------------- 不懂啊,index怎么用呢? --------------------编程问答-------------------- <c:forEach items="${requestScope.list}" var="users" varStatus="u">
    realyUpdate('${users.id}','${u.index}')//修改
</c:forEach>
我感觉这里简单的可以给你的用户名,密码td的id修改一下比如
<input type="text" value="${users.username}" id="username${u.index}">
<input type="text" value="${users.userpassword}" id="userpassword${u.index}">
 function realyUpdate(user_id,index){
   var user_name=document.getElementById("username"+index).value;
   .....
}
方法很多的 --------------------编程问答-------------------- 把javascript方法抽出来,不用写在循环里

然后每条记录去调用function的时候把id传过去就行了 --------------------编程问答-------------------- 你是怎样选定要删除的行呢? 你都没选定,就那样根据user.id来取值,肯定只能取到最后一条数据啊,user.id你那都有那么多重复的。 --------------------编程问答-------------------- 楼主你这编码习惯不好啊,JS代码不要写在body里面好吗。你用我的做个参考吧,今天面试刚好做的。    
<table border="1" align="center">
<tr>
<td>学生ID</td>
<td>班级ID</td>
<td>名字</td>
<td>年龄</td>
<td>生日</td>
<td>类型</td>
<td>备注</td>
<td align="center">操作</td>
</tr>
  <c:forEach items="${resultList.resultList}" var="Student" varStatus="status">
<tr>
   <td align="center">
       <c:out value="${Student.getStudent_ID()}" escapeXml="false"/>
     </td>
     <td align="center">
       <c:out value="${Student.getClass_ID()}" escapeXml="false"/>
     </td>
     <td align="center">
       <c:out value="${Student.getStudent_Name()}" escapeXml="false"/>
     </td>
     <td align="center">
       <c:out value="${Student.getStudent_Age()}" escapeXml="false"/>
     </td>
     <td align="center">
       <c:out value="${Student.getStudent_Birthday()}" escapeXml="false"/>
     </td>
   <td align="center">
       <c:out value="${Student.getStudent_type()}" escapeXml="false"/>
     </td>
     <td align="center">
       <c:out value="${Student.getSummary()}" escapeXml="false"/>
     </td>
     <td colspan="2" align="center">
     <a href='findStudentById.do?Student_ID=${Student.getStudent_ID()}'>修改</a>
     <a href='deleteTest.do?Student_ID=${Student.getStudent_ID()}'>删除</a>
     </td>
   </tr>
  </c:forEach>
</table> --------------------编程问答-------------------- 楼主的代码原因是js代码在循环体中  循环结束保留的值肯定是最后一条  所以你只能删除最后一条

要对应每一条
<input type="button" value="delete" onclick="realyDelete(${xxx.id})"/>//删除按钮

试试吧 --------------------编程问答-------------------- 删除的时候,你的ID不是逐一匹配的吧,或者说你的循环本身有问题,没分别取出来对应的id --------------------编程问答-------------------- 直接把uid的取值方式放到删除按钮的那个事件方法里面!!方法里面接受传值拼接到url后面就好了!! --------------------编程问答--------------------
引用 12 楼 xihuanhh 的回复:
楼主的代码原因是js代码在循环体中  循环结束保留的值肯定是最后一条  所以你只能删除最后一条

要对应每一条
<input type="button" value="delete" onclick="realyDelete(${xxx.id})"/>//删除按钮

试试吧

就是删除逻辑放在了循环体中的关系 --------------------编程问答-------------------- 直接用js获取,点击事件的这一行,,再删除,, --------------------编程问答--------------------
引用 5 楼 shxt_xiaozhi 的回复:
c标签有个varStatus="a" 取得话a.index就可以了 

这个是一种方法
  换有就是,你的buttton 也在循环里面,你可以把button 的 name或者 id 属性动态的附上该行的userId,userName.... 然后用js 传递到后台就可以了呀!!
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,