jsp页面代码:
<input type="checkbox" id="subcheck" name="subcheck" class="checkboxes" value="${teacher.id}" />
js代码:
function batchDeletes(){
var checkedNum = $("input[name = 'subcheck']:checked").length;
if(checkedNum == 0) {
alert("请至少选中一项!");
return false;
}
if(confirm("确定删除所选项目?")){
var checkedList = new Array();
$("input[name = 'subcheck']:checked").each(function (){
checkedList.push($(this).val());
});
$.ajax({
type: "POST",
url: "rest/teacher/batchDeletes.action",
data: {"ids": checkedList.toString()},
datatype: "html",
success: function (data) {
$("[name=‘checkbox‘]:checkbox").attr("checked", false);
art.dialog.tips('删除成功!');
setTimeout("location.reload()", 1000);//页面刷新
},
error:function(data){
art.dialog.tips('删除失败!');
}
});
}
}
controller代码:
@RequestMapping("/batchDeletes")
public void batchDeletes(HttpServletRequest request){
System.out.println(1);
String items = request.getParameter("ids");
List<String> delList = new ArrayList<String>();
String[] strs = items.split(",");
System.out.println(2);
for (String str : strs) {
delList.add(str);
}
basicTeacherService.batchDeletes(delList);
}
mapper.xml页面代码:
<delete id="batchDeletes" parameterType="java.lang.Long">
delete from basic_teacher where id in
<foreach collection="list" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
麻烦各路大神给看看到底是哪里出了问题哈,谢谢
大概看了一下,个人认为应该是传值的问题,你在javascript中传递的内容是一个Array,并不是一个字符串,对人那你最后使用toString转换了,但是在你的controller中使用,为分割标准来分割,因此我建议你在javascript中这样写:
var checked = "";
$("input[name = 'subcheck']:checked").each(function (){
checked += $(this).val() + ",";
});
$.ajax({
type: "POST",
url: "rest/teacher/batchDeletes.action",
data: {"ids": checked},
datatype: "html",
success: function (data) {
$("[name=‘checkbox‘]:checkbox").attr("checked", false);
art.dialog.tips('删除成功!');
setTimeout("location.reload()", 1000);//页面刷新
},
error:function(data){
art.dialog.tips('删除失败!');
}
});
这个方法在controller中可能还会有一个问题,那么就是最后一个,后面没有内容了,因此分割之后,最后一个元素无效
运行了是报了什么错呢,ajax里面返回的data里面有值么。说的清楚点啊
你的basicTeacherService.batchDeletes(delList);这个方法传的参数类型是String集合,
而你的mapper.xml配置里却是parameterType="java.lang.Long",把这个改成String试试