获取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="" 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,进行逻辑删除等操作的更多相关文章
- jQuery实现获取选中复选框的值
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Jq ...
- jQuery - 选中复选框则弹出提示框
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 自动化测试selenium(四)check,选中复选框,操作一组元素
定位复选框位置 打开浏览器,按F12,审查元素 接下来,我们要实现选中复选框 List<WebElement> inputs = driver.findElements(By.tagNam ...
- JS实现页面table鼠标移动改变tr行颜色,单击tr选中复选框功能
JS源代码: //需要设置tr背景颜色 var highlightcolor='#bfecfc'; //设置背景颜色 function changeto(index){ var tr1 = docum ...
- 【jquery】 选中复选框 和 return false 的影响
$('id').attr('checked',true); return false; 如果后面接上return false 的话,复选框的钩钩不会改变,但是.is(':checked')仍然能检 ...
- HTML 使用jQuery选中复选框 简易版
<html><head> <meta charset="utf-8"> <script src="jquery-1.7. ...
- EasyUI设置选中复选框
//设置选中 $('#isBind').prop('checked', true); //获取是否选中 var isChecked = $('#isBind').prop('checked'); if ...
- 选中复选框,才能在文本框中输东西。button按钮已启用,
- listview禁止双击一条之后选中复选框按钮的方法
this.listViewUsers.SelectedItems[0].Checked = !this.listViewUsers.SelectedItems[0].Checked;
随机推荐
- mbr看图
- HDU 1811(并查集+拓扑排序)题解
Problem Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球.为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他 ...
- BZOJ1355: [Baltic2009]Radio Transmission KMP
Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,1 < L ≤ 1, ...
- 转:java项目经验面试总结
转载: 在前期已经讲过怎样分析自己,对自己进行一个准确的定位,选择一个合适的求职方向!并结合自己的实际个人情况来写一份针对性很强的个人简历!个人简历就是个人的广告!好的简历可以更受到用人需求单位青睐! ...
- NetMagic Simple Overview
参考: NetMagic Startup: How to develop NetMagic rapidly NetMagic Simple Overview NetMagic 是什么? NetMagi ...
- spring Boot启动报错Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes
spring boot 启动报错如下 org.springframework.context.ApplicationContextException: Unable to start web serv ...
- C#高级编程第10版 note
泛型接口的抗变和协变 https://www.cnblogs.com/yanfang/p/6635302.html ①泛型接口,如果泛型类型前没有关键字out或者in来标注,则该泛型接口不支持抗变和协 ...
- Ubuntu 14.04 执行指定用户的命令
#!/bin/bashsudo -u username /home/sco/start_server.sh 或者 #!/bin/bashsu - username -c /etc/init.d/xxx ...
- shell 余弦值转角度
范例:余弦值转角度 用 bc -l 计算,可以获得高精度: $ export cos=0.996293; echo "scale=100; a(sqrt(1-$cos^2)/$cos)*18 ...
- spring boot打jar包发布
artifactId 是即将打包的包的名称 version 是即将打包的版本号 packaging 是即将打包的格式,这里讲的是jar包 终端输入命令: mvn clean install 然后在ta ...