实现复选框选择的功能

2015年4月9日 天气冷

这里以“用户授权”为例说明

实现方法一(适合弹出modal的场景):

后台代码如下:

/**
 * 用户授权
 * */
public String authorization() throws Exception {
    //action为0代表请求授权页面,action为1代表需要更新数据到数据库
    if (getAction().equals("0")) {
        user = userService.get(userId);
        //获得用户所有权限
        allRoleList = roleService.getAllRole();
        //获得用户已有权限
        Set<Role> userRoleList = user.getRoles();
        //循环所有权限,如果用户已经选中,则标记,前台显示打钩
        outer: for (Role userRole : userRoleList) {
            inner: for (Role allRole : allRoleList) {
                if (userRole.getRoleId().equals(allRole.getRoleId())) {
                    allRole.setIsCheck(1);
                    break inner;
                }
            }
        }
        return ROLE;
    } else {
        userService.authorization(userId, roles);
        setPageData();
        return SUCCESS;
    }
}

这段代码的大体意思是:在用户所有权限中,通过用户已有的权限与用户所有权限比较,将已有的权限在用户所有权限中做了一个标记isCheck(1),所以在界面前端就可以通过如下的代码实现勾选的动作了

前端代码如下:

<!-- 如果用户已经赋予权限,进来的时候权限要勾上 -->
<c:forEach items="${requestScope.allRoleList}" var="role">
      <c:choose>
           <c:when test="${role.isCheck == 1}">
                <input  type="checkbox" name="roles" value="${role.roleId}" checked="checked">${role.roleName}
           </c:when>
            <c:otherwise>
                 <input type="checkbox" name="roles" value="${role.roleId}">${role.roleName}
             </c:otherwise>
       </c:choose>
</c:forEach>

需要注意的地方是遇到json中要放一个对象及ArrayList的时候,可以把该对象及ArrayList放到一个Map中,由Map同一输出

当然有的同学会说,我不在后台在标记,直接在前端做可以吗。那当然可以,于是就有了第二种做法

实现方法二(适合于从一个跳转到另一个界面的场景,包括dialog中页面的跳转):

<c:choose>
    <c:when test="${not empty customerIdsMap}">
        <input type="checkbox" name="ids" value="${proposer.id}"
        <c:forEach items="${customerIdsMap}" var="cid">
            <c:if test="${cid == proposer.id}">
                checked="checked"
            </c:if>
        </c:forEach>
        />${proposer.trueName}
    </c:when>

    <c:otherwise>
        <input type="checkbox" name="ids" value="${proposer.id}" />${proposer.trueName}
    </c:otherwise>
</c:choose>

不过这个实现需要在后台分别返回customerIdsMap及proposer的对象,这两个对象一定要在同一域中,比如Json和request交叉混合就不行。因为request中的对象容易刷新丢失。

时间: 2024-11-10 12:10:07

实现复选框选择的功能的相关文章

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

jQuery+SpringMVC中的复选框选择与传值

一.checkbox选择 在jQuery中,选中checkbox通用的两种方式: $("#cb1").attr("checked","checked");$("#cb1").attr("checked",true); 对应的jQuery函数,主要完成三个功能: 1.第一个复选框选中或取消选中,则下面的复选框为全选或取消全选: 2.当下面的复选框全部选中时,则将第一个复选框设置为选中,当下面的复选框中有一个没

如何根据集合动态构建复选框选择控件

背景:根据列表或集合,构建复选框控件,从中选取若干选项.比如,构建城市选择控件,城市按照字母分组进行展示.再比如,构建学生选择控件,学生按照城市进行分组展示.常作为分部视图使用. 效果图: 如图,城市以红色字体显示,李雷来自北京,同时Lily和Lucy来自纽约. HTML代码如下: 1 <table><tr><td><input type="checkbox" id="checkedAll" onclick="wh

DevExpress XtraTreeList TreeList复选框选择

权限管理涉及复选框多勾选. 1.控件属性设置 TreeList.OperationView.ShowCheckBoxes=true;用于显示CheckBox: TreeList.OperationBehavior.AllowIndeterminateCheckState=true;  设置CheckBox允许第三种状态. 2.控件事件绑定 要实现选择父级节点选择.子级节点全部选中.父级节点未选择.反之.子级节点部分选中.父级节点为第三种状态. private void treeList1_Aft

复选框选择全部或只选单个

//html网页代码 <tr> <td> <input type="checkbox" name="vehicle_qx" id="vehicle_qx" value="0" onclick="vehicle_qx(0)"/><font>全部</font> <input type="checkbox" name="

DataGridView复选框实现单选功能

双击DataGridView进入事件 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { int count = dataGridView1.Rows.Count; for (int i = 0; i < count; i++) { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dataGr

【ztree】完美实现复选框功能

在权限系统中,大多数的页面都用到了树形结构,其中最常用的便是树资源的加载和单击事件,除此之外ztree还可以实现很多功能.今天以实现复选框的添加功能为例,咱们再来深入的学习下ztree的应用. 一.实例描述 在用户管理模块中,需要给用户添加角色,而用户与角色的之间是一个多对多的关系.这里我们可以先加载两个角色树资源,通过两个树之间数据的交换,从而得到用户所拥有的角色资源,实现效果如下: 1.用户信息入口 2.加载角色信息 Datagrid表格中的"分配"按钮是针对单个用户的角色分配,而

freemarker中修改和添加功能中包含checkbox复选框默认选中需求的解决方式

今天做的公司ERP系统上线第一天内部使用的,各种BUG铺天盖地,[虽然只是技术总监一个人在测试……],其中有一个就是其中部门管理页面中的修改和添加功能 一个人做一套ERP总是有点疏漏的,虽然里面的东西大部分都是CRUD,不过作为一个菜鸟感觉还是压力山大,废话不说了开始上代码: 首先在后台Controller中添加数据处理,因为之前已经实现了显示所有复选框的选项功能了,所以这次只需要得出需要默认选中的数据,然后发到页面进行处理: 虽然代码只有这么一点,不过也耗费了好几个小时来弄出来了... 这是修

【mfc】组框、单选框控件与复选框控件

VC6中的MFC中的单选框与复选框控件也不简单,它没有VS中C#那样可以之间通过一个封装之后的函数进行判断,该单选框/复选框有没有被选中啊?或者控制单选框/复选框的选中状态.这东西比较复杂,通过相应的值来控制的. 一.基本目标 下面就用一个简单例子来说明VC6中的MFC中的单选框与复选框控件,点击"确定"按钮能够判断对话框中的所有单选框与复选框的选中状态.Radio1-Radio3互成一个组,组内仅能够有一个组员被选中,Radio4-Radio5也互成一组,选择Radio4能够令复选框