獲取jsp選中複選框的id傳到後臺controller,進行邏輯刪除等操做

邏輯刪除設備:(數據表中還有這條記錄,不顯示出來)javascript

思路:html

數據表加個字段display,值爲Y/N,只顯示display爲Y的,
刪除時,把display的值改成N,就不會顯示出來java

 

jsp頁面以下圖,要獲取選中的複選框,把選中的id傳給SpringMVC的Controllerapache

 

 完整流程以下:數組

一、sbgl_list.jsp session

<%@ 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>

 二、SbglController.java app

 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頁面的處理方法
    }

}

 

 

三、SbglService.javajsp

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;
    
}

 

四、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);
    }
    
    
}

 

 五、DAO:

package com.jinhetech.yogurt.sbgl.dao;


@Repository("sbglDao")
public interface SbglDao extends PagingAndSortingRepository<Sbgl, String>, JpaSpecificationExecutor<Sbgl> {
    
    
}

 

 

六、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;
    }




}
相關文章
相關標籤/搜索