• 获取jsp选中复选框的id传到后台controller,进行逻辑删除等操作


    逻辑删除设备:(数据表中还有这条记录,不显示出来)

    思路:

    数据表加个字段display,值为Y/N,只显示display为Y的,
    删除时,把display的值改为N,就不会显示出来

    jsp页面如下图,要获取选中的复选框,把选中的id传给SpringMVC的Controller

     完整流程如下:

    1、sbgl_list.jsp 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
    <!doctype html>
    
    <c:set var="ctx" value="${pageContext.request.contextPath}" scope="session"/>
    
    <html>
    <head>
       <title>设备管理</title>
       
        
       <script type="text/javascript">
    
       function console(consoleTag, sbbm, stateTag) {
    
            //table表中选中的复选框赋值给checkedSubject
            var checkedSubject = $('#showSbgl input[name=checkIds]:checkbox:checked');
            var checkedIds="";
            //循环获取选中的复选框的value,这个value是数据表中每条记录的主键${sbgl.sbbm},传给后台,后台就能根据主键查找到数据表的相应记录
         //将其value用逗号隔开拼接成一个字符串 checkedSubject.each(function() { checkedIds
    =checkedIds+","+$(this).val(); });
        //上面的字符串赋值给隐藏域表单 $(
    '#checkedIds').val(checkedIds); // 添加。 if("add" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_add_list"); } // 更新。 if("update" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_update_list"); } //删除 if("delete" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_delete_list"); }
         //提交隐藏域表单,后台才能获取隐藏域表单的值 $(
    '#formid').submit(); } /** * 搜索。 */ function search() { $('#searchForm').submit(); } </script> </head> <body> <div class="clear"> <div class="panel panel-default yogurt_route" id="yogurt_route"> <a href="${ctx }/home/home_list">首页</a> > <a href="javascript:void(0);" onclick="navigate();">设备管理</a> > 设备列表 </div> </div> <!-- 新增、删除 --> <div class="panel panel-default" style="margin-top:10px"> <div class="yogurt_panel_title_core"> <span class="state_bold">共查询出数据结果:<span class="state_red">${resultMap.totalNum}</span>条</span> </div> <div class="more_core3"> <button type="button" class="btn btn-success yogurt_search_button2" onclick="console('add','');">新增设备</button> <button type="button" class="btn btn-success yogurt_search_button2" onclick="console('delete','');">删除设备</button> </div> </div> <!-- 列表 --> <div class="yogurt_elementsbox_core clear"> <div class="yogurt_elementsbox_table_article" id="yogurt_elementsbox_table_article"> <table id="showSbgl" border="0" cellspacing="0" cellpadding="0" class="table yogurt_elementsbox_table"> <thead> <tr class="yogurt_tab_back" onmouseover="this.className='yogurt_tab_trhover'" onmouseout="this.className='yogurt_tab_back'"> <th width="3%"><input type="checkbox" name="sbglId" onClick="allchecked(this)"></th> <th width="10%">设备名称</th> <th width="10%">设备类型</th> <th width="10%">所属市县</th> </tr> </thead> <tbody id="sbglTb"> <c:forEach var="sbgl" items="${resultMap.resultList}" varStatus="status"> <tr> <td><input type="checkbox" id="checkIds" name="checkIds" value=${sbgl.sbbm }></td> <td>${sbgl.sbmc }</td> <td>${sbgl.sblx }</td> <td>${sbgl.sssx }</td> </tr> </c:forEach> </tbody> </table> </div> </div> <%-- 隐藏域表单 --%> <form action="" method="post" id="formid"> <input type="hidden" name="sbbm" id="sbbm" /> <input type="hidden" name="checkedIds" id="checkedIds" /> </form> </body> </html>

     2、SbglController.java 

     Spring Data JPA数据访问操作框架

    package com.jinhetech.yogurt.sbgl.controller;
    
    @Controller("sbglController")
    @RequestMapping("/sbgl")
    public class SbglController extends BaseController {
    
        @Resource(name = "sbglService")
        private SbglService sbglService;
    
        /**
         * 查询设备信息列表(支持分页和多条件查询)。
         * 
         * @author YangZhenghua 2014-5-28
         * @throws Exception
         */
        @RequestMapping("sbgl_list")
        @RequiresRoles("sbgl/sbgl_list")
        public String getSbglList(Model model) throws Exception {
            
            Map<String, Object> resultMap = null;
            //serArgs里存着前台传来的查询时的where条件字段(根据条件搜索)
            Map<String, String> serArgs = new HashMap<String, String>();
            serArgs = SbglUtil.getSelArgsToMap(request);
            resultMap = sbglService.getSbglBySearch(serArgs, "azsj");
            
            model.addAttribute("resultMap", resultMap);
            return "sbgl/sbgl_list";
        }
    
    
    
        
        /**
         * 逻辑删除设备,就是把数据表对应要删除的记录的display字段设为N,
         * 查询时,加个where条件,只查询display为"Y"的即可
         */
        @RequestMapping("sbgl_delete_list")
        @RequiresRoles("sbgl/sbgl_delete_list")
        public String getDeleteList(Model model) throws Exception {
            
            String id=request.getParameter("checkedIds");    //获取前台隐藏域存着的选中的复选框的value
            String checkedIds[]=id.split(",");  //进行分割存到数组
            String temp="";
            Sbgl sbgl;
            
            for(int i =0;i<checkedIds.length;i++){
                if(!checkedIds[i].equals("")){
                    System.out.println(checkedIds[i]);
                    temp=checkedIds[i];
                    sbgl=sbglService.getById(temp);    //根据ID获取数据表中这条ID的整条记录
                    sbgl.setDisplay("N");    //更改这个ID的display字段的值
                    sbglService.save(sbgl);    //保存更改
                }
            }
    
            return getSbglList(model);//返回sbgl_list页面的处理方法
        }
    
    }

    3、SbglService.java

    package com.jinhetech.yogurt.sbgl.service;
    
    public interface SbglService {
    
        public Sbgl save(Sbgl sbgl) throws Exception;
        
        public Map<String, Object> getSbglBySearch(Map<String, String> serArgs, final String sortType) throws Exception;
        
        //根据id查询所有设备信息
        public Sbgl getById(String id) throws Exception;
        
    }

    4、SbglServiceImpl.java

    package com.jinhetech.yogurt.sbgl.service.impl;
    
    @Service("sbglService")
    @Transactional
    public class SbglServiceImpl implements SbglService{
    
        @Resource(name = "sbglDao")
        private SbglDao sbglDao;
        
    
        public Sbgl save(Sbgl sbgl) throws Exception {
            return sbglDao.save(sbgl);
        }
        
        
        /**
         * 查询用户信息列表(支持分页和多条件查询)。
         * 
         * Spring Data JPA知识
         */
        public Map<String, Object> getSbglBySearch(final Map<String, String> serArgs, final String sortType) throws Exception {
    
            // 获得分页对象pageable,并且在pageable中页码是从0开始,设定按照sortType升序排列
            Pageable pageable = PageUtils.buildPageRequest(Integer.valueOf(serArgs.get("pageNum")),
                    Integer.valueOf(serArgs.get("pageSize")), sortType);
    
            Page<Sbgl> objPage = sbglDao.findAll(new Specification<Sbgl>() {
    
                public Predicate toPredicate(Root<Sbgl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                    List<Predicate> lstPredicates = new ArrayList<Predicate>();
    
                    if (TextUtils.isNotBlank(serArgs.get("serSbmc"))) {
                        lstPredicates.add(cb.like(root.get("sbmc").as(String.class), "%" + serArgs.get("serSbmc") + "%"));
                    }
                    if (TextUtils.isNotBlank(serArgs.get("serSblx"))) {
                        lstPredicates.add(cb.like(root.get("sblx").as(String.class), "%" + serArgs.get("serSblx") + "%"));
                    }
                    if (TextUtils.isNotBlank(serArgs.get("serSssx"))) {
                        lstPredicates.add(cb.like(root.get("sssx").as(String.class), "%" + serArgs.get("serSssx") + "%"));
                    }
                    if (TextUtils.isNotBlank(serArgs.get("serJdmc"))) {
                        lstPredicates.add(cb.like(root.get("ssjd").as(String.class), "%" + serArgs.get("serJdmc") + "%"));
                    }
    
                    if (TextUtils.isNotBlank(serArgs.get("serSbzt"))) {
                        lstPredicates.add(cb.equal(root.get("sbzt"), serArgs.get("serSbzt")));
                    }
                    //只显示display等于'Y'的记录
                    lstPredicates.add(cb.equal(root.get("display"), serArgs.get("display")));
                            
                    Predicate[] arrayPredicates = new Predicate[lstPredicates.size()];
                    return cb.and(lstPredicates.toArray(arrayPredicates));
                }
            }, pageable);
    
            return PageUtils.getPageMap(objPage);
        }
    
        
        public Sbgl getById(String id) throws Exception {
            return sbglDao.findOne(id);
        }
        
        
    }

     5、DAO:

    package com.jinhetech.yogurt.sbgl.dao;
    
    
    @Repository("sbglDao")
    public interface SbglDao extends PagingAndSortingRepository<Sbgl, String>, JpaSpecificationExecutor<Sbgl> {
        
        
    }

    6、SbglUtil.java

    package com.jinhetech.yogurt.sbgl.util;
    
    
    /**
     * 用户功能模块工具类。
     * 
     */
    public class SbglUtil {
    
        /**
         * 封装从前台传递过来的查询参数。
         * 
         * @author YangZhenghua
         * @date 2014-6-26
         */
        public static Map<String, String> getSelArgsToMap(HttpServletRequest request) throws Exception {
            Map<String, String> serArgs = new HashMap<String, String>();
    
            String serSbmc = request.getParameter("serSbmc");
            String serSblx = request.getParameter("serSblx");
            String serSssx = request.getParameter("serSssx");
            String serJdmc = request.getParameter("serJdmc");
            String serSbzt = request.getParameter("serSbzt");
            
            String display="Y";
            
            String pageNum = request.getParameter("pageNum") == null ? "1" : request.getParameter("pageNum");
            String pageSize = request.getParameter("pageSize") == null ? "10" : request.getParameter("pageSize");
    
            serArgs.put("serSbmc", serSbmc);
            serArgs.put("serSblx", serSblx);
            serArgs.put("serSssx", serSssx);
            serArgs.put("serJdmc", serJdmc);
            serArgs.put("serSbzt", serSbzt);
            serArgs.put("display", display);
            
            serArgs.put("pageNum", pageNum);
            serArgs.put("pageSize", pageSize);
    
            return serArgs;
        }
    
    
    
    
    }
  • 相关阅读:
    工商银行:应用多k8s集群管理及容灾实践
    鸿蒙轻内核源码分析:掌握信号量使用差异
    云图说|ASM灰度发布,让服务发布变得更敏捷、更安全
    解读多云跨云下的容器治理与实践
    互斥锁Mutex:鸿蒙轻内核中处理临界资源独占的“法官”
    带你深入理解Java的IO到底是个啥
    毕业季offer怎么拿?收下这份非典型求职面试指南
    CKEditor 5 摸爬滚打(一)—— 从零构建定制化工程项目
    说起来你可能不信,一个正则就能让页面卡死
    sklearn中的pipeline的创建与访问
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/6283679.html
Copyright © 2020-2023  润新知