lucas1018
2017-03-15 07:29
采纳率: 66.7%
浏览 4.2k
已采纳

在springmvc和mybatis框架下根据id批量删除

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>

麻烦各路大神给看看到底是哪里出了问题哈,谢谢

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 「已注销」 2017-03-15 07:41
    已采纳

    大概看了一下,个人认为应该是传值的问题,你在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中可能还会有一个问题,那么就是最后一个,后面没有内容了,因此分割之后,最后一个元素无效

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • qq_34379959 2017-03-15 07:44

    运行了是报了什么错呢,ajax里面返回的data里面有值么。说的清楚点啊

    评论
    解决 无用
    打赏 举报
  • yanhuhui 2017-03-15 08:40

    你的basicTeacherService.batchDeletes(delList);这个方法传的参数类型是String集合,
    而你的mapper.xml配置里却是parameterType="java.lang.Long",把这个改成String试试

    评论
    解决 无用
    打赏 举报
  • lucas1018 2017-03-15 09:09

    谢谢楼上各位,此问题已解决,是url路径问题。将其改成controller页面所在的绝对地址就ok了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题