<s:iterator id="student" value="#attr.list" >
<tr>
<td><s:property value="stuNo"/></td>
<td><s:property value="name"/></td>
<td><s:property value="age"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="stuClass"/></td>
<td><input type="checkbox" value="stuNo" > </td>
</tr>
</s:iterator>
</table>
<input type="button" value="删除" onClick="location.href='tt/delete_stu_by_id.action'">
<input type="submit" value="更改" >
我想得到的效果是每个学生信息后面有一个复选框,选择后点击删除按钮能将数据库中相应的信息删除,该如何写呢?
12 个解决方案
#1
可以把选中的选项里面的value拼接成一个字符串(或者数组),然后送到action逐个处理就好了吧应该,类似于这种想法
#2
不是很明确啊~
#3
通过actionform把值传递到后台,后台获取值,然后利用获取的值组合删除条件,执行操作数据库的SQL进行删除。
#4
<script type="text/javascript">这是jsp
function deleteStudents(){
stuForm.action=" delete_stu_by_id.action" ;
stuForm.submit();
}
</script>
<head>
<title>ShowAllStudent</title>
</head>
<body>
<form action="" method="post" name="stuForm">
<table border="1">
<tr>
<td >学号</td>
<td width="50">姓名</td>
<td width="50">年龄</td>
<td width="50">性别</td>
<td width="50">班级</td>
<td align="center">操 作</td>
</tr>
<s:iterator id="student" value="#attr.list" >
<tr>
<td><s:property value="stuNo"/></td>
<td><s:property value="name"/></td>
<td><s:property value="age"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="stuClass"/></td>
<td><input type="checkbox" value="stuNo" > </td>
</tr>
</s:iterator>
</table>
<input type="button" value="删除" onclick="window.location.href='tt/delete_stu_by_id.action?stuNo='+<s:property value="stuNo"/>">
<input type="submit" value="更改" >
</form>
</body>
</html>
public class DeleteOneStu extends ActionSupport{这是后台action
private String stuNo;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String delete()throws Exception{
String stuNo= ServletActionContext.getRequest().getParameter("stuNo");
StudentDaoEntity studentDao = new StudentDaoEntity();
studentDao.delStu(stuNo);
return "delete_success";
}
}
可以这么用么?为什么报错呢?我该怎么修改?
#5
前台
后台
其实你应该在Service层或在Dao层实现一个批量删除的方法,前台Action只是接收请求,调用相应的方法而已.
><input type="checkbox" value="stuNo" name="stuNo">
后台
public class DeleteOneStu extends ActionSupport{
private String[] stuNo; //或者你的主键是Integer或Long就对应它的数组 Integer[]...
public String[] getStuNo() {
return stuNo;
}
public void setStuNo(String[] stuNo) {
this.stuNo = stuNo;
}
public String delete()throws Exception{
StudentDaoEntity studentDao = new StudentDaoEntity();
for(String numb:stuNo){
studentDao.delStu(numb);
}
//studentDao.delStu(stuNo);
return "delete_success";
}
}
其实你应该在Service层或在Dao层实现一个批量删除的方法,前台Action只是接收请求,调用相应的方法而已.
#6
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
#7
这种做法的问题在于table是循环出来的列表,而事件后面的onclick="window.location.href='tt/delete_stu_by_id.action?stuNo='+<s:property value="stuNo"/>"> 中的<s:property value="stuNo"/>究竟取哪个值,其实这个值是空的,因为这样写法会从后台找对应的action中的变量stuNo。
table中循环的最后一列:<td><input type="checkbox" value="stuNo" > </td> 应该写成
<td><input type="checkbox" value="<s:property value='stuNo'/>" > </td> 这样才会把每行循环的stuNo赋给checkbox的value,最好加个name属性 ,方便js取值
最后在点击删除按钮时,如果是单选的话,用脚本获取选中那行 checkbox中的值,传给参数stuNo
如果是多选的话,可以拼接字符串或者json格式传给后台,后台进一步解析字符串或者json格式字符串。
#8
#6 得分:0 回复于: 2013-04-18 09:12:41
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
#9
在传回的页面是如何删除的呢?整个表单都是ajax么?
#10
你在删除时,传递一个参数到action中,这个参数就是主键。在后台调用deletebyId(long id)就行了.
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
#11
前台如何进行传递这个参数呢?
#12
<form action="" method="post">直接在action里传递参数。
或者使用隐藏字段<input type="hidden" name="id" value="">
#1
可以把选中的选项里面的value拼接成一个字符串(或者数组),然后送到action逐个处理就好了吧应该,类似于这种想法
#2
可以把选中的选项里面的value拼接成一个字符串(或者数组),然后送到action逐个处理就好了吧应该,类似于这种想法
#3
通过actionform把值传递到后台,后台获取值,然后利用获取的值组合删除条件,执行操作数据库的SQL进行删除。
#4
通过actionform把值传递到后台,后台获取值,然后利用获取的值组合删除条件,执行操作数据库的SQL进行删除。
<script type="text/javascript">这是jsp
function deleteStudents(){
stuForm.action=" delete_stu_by_id.action" ;
stuForm.submit();
}
</script>
<head>
<title>ShowAllStudent</title>
</head>
<body>
<form action="" method="post" name="stuForm">
<table border="1">
<tr>
<td >学号</td>
<td width="50">姓名</td>
<td width="50">年龄</td>
<td width="50">性别</td>
<td width="50">班级</td>
<td align="center">操 作</td>
</tr>
<s:iterator id="student" value="#attr.list" >
<tr>
<td><s:property value="stuNo"/></td>
<td><s:property value="name"/></td>
<td><s:property value="age"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="stuClass"/></td>
<td><input type="checkbox" value="stuNo" > </td>
</tr>
</s:iterator>
</table>
<input type="button" value="删除" onclick="window.location.href='tt/delete_stu_by_id.action?stuNo='+<s:property value="stuNo"/>">
<input type="submit" value="更改" >
</form>
</body>
</html>
public class DeleteOneStu extends ActionSupport{这是后台action
private String stuNo;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String delete()throws Exception{
String stuNo= ServletActionContext.getRequest().getParameter("stuNo");
StudentDaoEntity studentDao = new StudentDaoEntity();
studentDao.delStu(stuNo);
return "delete_success";
}
}
可以这么用么?为什么报错呢?我该怎么修改?
#5
前台
后台
其实你应该在Service层或在Dao层实现一个批量删除的方法,前台Action只是接收请求,调用相应的方法而已.
><input type="checkbox" value="stuNo" name="stuNo">
后台
public class DeleteOneStu extends ActionSupport{
private String[] stuNo; //或者你的主键是Integer或Long就对应它的数组 Integer[]...
public String[] getStuNo() {
return stuNo;
}
public void setStuNo(String[] stuNo) {
this.stuNo = stuNo;
}
public String delete()throws Exception{
StudentDaoEntity studentDao = new StudentDaoEntity();
for(String numb:stuNo){
studentDao.delStu(numb);
}
//studentDao.delStu(stuNo);
return "delete_success";
}
}
其实你应该在Service层或在Dao层实现一个批量删除的方法,前台Action只是接收请求,调用相应的方法而已.
#6
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
#7
这是后台action
可以这么用么?为什么报错呢?我该怎么修改? ……
这种做法的问题在于table是循环出来的列表,而事件后面的onclick="window.location.href='tt/delete_stu_by_id.action?stuNo='+<s:property value="stuNo"/>"> 中的<s:property value="stuNo"/>究竟取哪个值,其实这个值是空的,因为这样写法会从后台找对应的action中的变量stuNo。
table中循环的最后一列:<td><input type="checkbox" value="stuNo" > </td> 应该写成
<td><input type="checkbox" value="<s:property value='stuNo'/>" > </td> 这样才会把每行循环的stuNo赋给checkbox的value,最好加个name属性 ,方便js取值
最后在点击删除按钮时,如果是单选的话,用脚本获取选中那行 checkbox中的值,传给参数stuNo
如果是多选的话,可以拼接字符串或者json格式传给后台,后台进一步解析字符串或者json格式字符串。
#8
#6 得分:0 回复于: 2013-04-18 09:12:41
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
#9
#6 得分:0 回复于: 2013-04-18 09:12:41
可以使用ajax来实现,删除时把需要删除的数据的id值的集合传到后台,后台操作后返回状态,如果成功在页面用js把页面数据删除。
#10
你在删除时,传递一个参数到action中,这个参数就是主键。在后台调用deletebyId(long id)就行了.
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
#11
你在删除时,传递一个参数到action中,这个参数就是主键。在后台调用deletebyId(long id)就行了.
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
#12
前台如何进行传递这个参数呢?
你在删除时,传递一个参数到action中,这个参数就是主键。在后台调用deletebyId(long id)就行了.
至于删除之后的回显,在调用一次getAll()获得list,把list放入requset中,就可以了。
<form action="" method="post">直接在action里传递参数。
或者使用隐藏字段<input type="hidden" name="id" value="">