lucas1018 2017-03-15 07:29 采纳率: 100%
浏览 4212
已采纳

在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>

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

  • 写回答

3条回答 默认 最新

  • 「已注销」 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中可能还会有一个问题,那么就是最后一个,后面没有内容了,因此分割之后,最后一个元素无效

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器