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

思路:

数据表加个字段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. LightOJ 1393 Crazy Calendar(博弈)题解

    题意:r*c方格中,每个格子有一定石子,每次移动每格任意数量石子,只能向下或者向右动一格,不能移动为败 思路:显然是Nim,到右下曼哈顿距离为偶数的不用管,因为先手动一下后手动一下最后移到右下后还是先 ...

  2. JMeter -- Getting Started

    https://jmeter.apache.org/usermanual/get-started.html 1.0 Overview When using JMeter you will usuall ...

  3. FieldOffset

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.G ...

  4. Stream API

    引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...

  5. stm32 pwm 电调 电机

    先上代码 python 树莓派版本,通俗表现原理.stm32 C语言版本在后面 import RPi.GPIO as GPIO import time mode=2 IN1=11 def setup( ...

  6. 部署showdoc

    1.下载 https://github.com/star7th/showdoc 2.解压 sudo tar -zvxf ~/showdoc-2.4.5.tar.gz -C /home/wwwroot/ ...

  7. Python day16 tag式整体退出技巧

    在写一些服务器时,往往会多层嵌套循环,可利用tag变量实现整体退出功能,代码: tag=True while tag: print('level1') choice=input('level1> ...

  8. SetParent

    1.http://bbs.csdn.net/topics/390672855 该帖子中 第15楼: “ MSDN里面说了:if hWndNewParent is not NULL and the wi ...

  9. C#中的?

    1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...

  10. String字符串存入数据库中超出最大长度(oracle varchar2 4000)?应合理分条存储(java实现-工具/方法)

    问题描述 需要向数据库中保存数据,但某个字段内容长度过长(有中文.符号.英文),应该根据字符串内容与数据库存储上限合理设置储存方式. 解决思路 分条存储,即多条数据前n个字段一致,最后内容字段不同,下 ...