用户管理的设计--8.批量用户信息删除

页面效果

  勾选一个或多个用户,或点击全选框,然后单击【批量删除】,弹出确认窗口。确定则删除,取消则不删除:


实现步骤

1.JSP页面的js函数

  1.1添加按钮【批量删除】单击事件触发的js函数,有两种实现方式:

    1.1 DOM对象实现

DOM对象实现批量删除js

    1.2 jQuery对象实现

function deleteAll(){
     var $selectuser = $("input[type=checkbox][name=userID]");
     var flag = false;
     $selectuser.each(function(){
         if(this.checked){
             flag=true;
             return false;//退出循环
         }
     })
     if(!flag){
         alert("没有选择执行操作的用户!不能执行该操作");
         return false;
     }
     else{
         var confirmflag = window.confirm("你确定执行批量删除吗?");
         if(!confirmflag){
             return false;
         }
         else{
             $("#Form2").attr("action","elecUserAction_delete.do");
             $("#Form2").submit();     
             return true;
         }
    }
  }
jQuery实现批量删除的js代码

  1.2添加全选框单击事件触发的js函数,也有两种实现方式

    2.1 DOM对象实现

//用户:全部选中/全部不选中
   function checkAllUser(user){
      var selectuser = document.getElementsByName("userID");
      for(var i=0;i<selectuser.length;i++){
          selectuser[i].checked = user.checked;
      }
   }
全选/全不选js

    2.2 jQuery对象实现

//用户:全部选中/全部不选中
function checkAllUser(user){
      $("input[type=checkbox][name=userID]").attr("checked",user.checked);
  }
jQuery实现全选/全不选

2.Action类中添加删除方法

    /**  
    * @Name: delete
    * @Description: 删除用户信息
    * @Parameters: 无
    * @Return: String 重定向到system/userIndex.jsp
    */
    public String delete(){
        elecUserService.deleteUserByID(elecUser);
        return "delete";
    }

3.struts.xml中添加

<result name="delete" type="redirectAction">
     <param name="actionName">elecUserAction_home.do</param>
</result>

  即删除后,重定向到用户管理首页面,相当于刷新了一下

4.在Service实现类中添加业务方法

    /**  
    * @Name: deleteUserByID
    * @Description: 删除用户信息
    * @Parameters: ElecUser VO对象
    * @Return: 无
    */
    @Override
    @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
    public void deleteUserByID(ElecUser elecUser) {
        //获取获取ID,String userID,如果是多个值,struts2默认采用", "的形式
        String userID = elecUser.getUserID();
        String[] userIDs = userID.split(", ");
        if(userIDs!=null&&userIDs.length>0){
            //获取每个用户ID
            for(String uid:userIDs){
                //使用ID查询用户对象,获取该用户对应的附件
                ElecUser user = elecUserDao.findObjectByID(uid);
                Set<ElecUserFile> userFiles = user.getElecUserFiles();
                //遍历用户附件
                if(userFiles!=null&&userFiles.size()>0){
                    for(ElecUserFile userFile:userFiles){
                        //获取路径
                        String path=ServletActionContext.getServletContext().getRealPath("")+userFile.getFileURL();
                        File file = new File(path);
                        if(file.exists()){
                            //如果路径存在,删除该用户对应的文件
                            file.delete();
                        }
                    }
                    
                }
            }
        }
        //根据用户id删除用户信息(同时级联删除附件表)
        elecUserDao.deleteObjectByIDs(userIDs);
    }
定义删除方法

  因为用户与附件是一对多的关系,可采用级联操作,删除用户同时也删除附件表,这样比较简便。

5.hbm.xml文件中定义级联

<set name="elecUserFiles" table="Elec_User_File" inverse="true" order-by="progressTime desc" cascade="delete">
....
</set>

这里  order-by=progressTime desc      附件按创建时间递减顺序展示

    cascsde=detele          级联删除

原文地址:https://www.cnblogs.com/zhstudy/p/7163321.html