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

思路:

数据表加个字段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. shell脚本中如何使scp不输入密码即可传输文件

    答:使用ssh密钥对 示例如下: 如果A机想要获取B机上的文件,那么需要将在A机上生成的公钥放置到B机上的指定位置~/.ssh/authorized_keys 问题一: 如何在A机上生成ssh密钥对? ...

  2. ubuntu下git clone 提速

    环境:ubuntu16.04 方法:通过socks5代理并且使用http链接 步骤: 1.设置全局使用socks5代理,并且使用http传输 git config --global http.prox ...

  3. Oracle和MySQL的对比

    一.概述 1.1 Oracle 1.1.1 优点 开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持: 可伸缩 ...

  4. linux系统上安装java

    linux系统上安装java   如何在ubuntu server上安装java(jre或jdk),主要注意以下几点: 1.下载你想要的java版本压缩包. JRE下载:http://java.com ...

  5. [Linux] - Linux安装JDK

    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  <官方JDK下载 之后 ...

  6. js delete可以删除对象属性及变量

    ,对象属性删除 function fun(){ this.name = 'mm'; } var obj = new fun(); console.log(obj.name);//mm delete o ...

  7. chrome的url列表里面也找不到chrome://plugins的原因

    plugins 页面被移除后,可以访问: chrome://settings/content 调整 Flash.PDF 的设置. 原本 plugins 页面就基本只剩下这两货了,移除掉确实没啥影响. ...

  8. [原][库][c++]tinyxml使用小结

    参考:http://blog.csdn.net/L_Andy/article/details/40615517 tinyxml官网: http://www.grinninglizard.com/tin ...

  9. 《剑指offer》第七题(重要!重建二叉树)

    文件一:main.cpp // 面试题:重建二叉树 // 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输 // 入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历 ...

  10. jq的attr()与prop()之间区别

    1.attr() 一直存在,prop() 仅存在于 jq-1.6 及其之后 2.新版本jq使用细节: 2.1 自定义添加至dom节点的属性,用attr获取 2.2 表单类checked.selecte ...