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

思路:

数据表加个字段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="" cellspacing="" cellpadding="" 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 =;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 ? "" : request.getParameter("pageNum");
String pageSize = request.getParameter("pageSize") == null ? "" : 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;
} }

获取jsp选中复选框的id传到后台controller,进行逻辑删除等操作的更多相关文章

  1. jQuery实现获取选中复选框的值

    <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Jq ...

  2. jQuery - 选中复选框则弹出提示框

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. 自动化测试selenium(四)check,选中复选框,操作一组元素

    定位复选框位置 打开浏览器,按F12,审查元素 接下来,我们要实现选中复选框 List<WebElement> inputs = driver.findElements(By.tagNam ...

  4. JS实现页面table鼠标移动改变tr行颜色,单击tr选中复选框功能

    JS源代码: //需要设置tr背景颜色 var highlightcolor='#bfecfc'; //设置背景颜色 function changeto(index){ var tr1 = docum ...

  5. 【jquery】 选中复选框 和 return false 的影响

    $('id').attr('checked',true); return false;   如果后面接上return false 的话,复选框的钩钩不会改变,但是.is(':checked')仍然能检 ...

  6. HTML 使用jQuery选中复选框 简易版

    <html><head>   <meta charset="utf-8">   <script src="jquery-1.7. ...

  7. EasyUI设置选中复选框

    //设置选中 $('#isBind').prop('checked', true); //获取是否选中 var isChecked = $('#isBind').prop('checked'); if ...

  8. 选中复选框,才能在文本框中输东西。button按钮已启用,

  9. listview禁止双击一条之后选中复选框按钮的方法

    this.listViewUsers.SelectedItems[0].Checked = !this.listViewUsers.SelectedItems[0].Checked;

随机推荐

  1. Python3基础 lambda 简单示例

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. 高斯消元&&luogu3389

    高斯消元(Gauss) 高斯消元和我们做二元一次方程组差不多 流程: 1.把系数和右边的值就是用二维数组存下来->转化成矩阵 我们的目标是把这个矩阵装换成 上三角的形式 对角线系数全部为1,1下 ...

  3. Maven可用setting.xml

    最简单的可用阿里镜像配置 <?xml version="1.0" encoding="UTF-8"?> <settings> <l ...

  4. POJ 2029 (二维树状数组)题解

    思路: 大力出奇迹,先用二维树状数组存,然后暴力枚举 算某个矩形区域的值的示意图如下,代码在下面慢慢找... 代码: #include<cstdio> #include<map> ...

  5. PTA第一次作业

    5-5 #include <cstdio> #include <iostream> #include <cstdlib> using namespace std; ...

  6. [POJ1958][Strange Tower of Hanoi]

    题目描述 求解 \(n\) 个盘子 \(4\) 座塔的 Hanoi 问题最少需要多少步 问题分析 考虑 \(3\) 座塔的 Hanoi 问题,记 \(f[i]\) 表示最少需要多少步, 则 \(f[i ...

  7. Codeforces Beta Round #94 div 2 C Statues dfs或者bfs

    C. Statues time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  8. Cocos2d-x学习笔记(九)场景切换

    这里只介绍两个简单的两个场景相互切换的方法. void pushScene(Scene *sn)和void popScene(Scene *sn)是一对.前者将当前场景放入到场景堆栈中,并切换到下一个 ...

  9. jenkins网页报错,Unable to create the home directory ‘/usr/share/tomcat7/.jenkins’. This is most likely a permission problem

    cd /usr/share/tomcat7 sudo mkdir .jenkins sudo chown tomcat7:nogroup .jenkins 执行以上操作,重启解决

  10. django 接口

    ajax部分: <html> <script type="text/javascript" src="./jquery-2.1.4.min.js&quo ...