jsp权限配置、初始化、查询控制的解决方案
2014-09-02 13:42
274 查看
问题提出:
实现方式:将专业和年级用"@23@"的形式存数据库,判断like则有权限
CREATE TABLE `notice` ( `notice_id` INT(11) NOT NULL AUTO_INCREMENT, `content` LONGTEXT NULL COMMENT '内容' COLLATE 'utf8_bin', `create_date` DATETIME NOT NULL COMMENT '创建时间', `user_id` INT(11) NOT NULL COMMENT '创建人主键', `user_name` VARCHAR(50) NOT NULL COMMENT '创建人名字' COLLATE 'utf8_bin', `publish_date` DATETIME NOT NULL COMMENT '发布时间', `title` VARCHAR(300) NOT NULL COMMENT '标题' COLLATE 'utf8_bin', `visible_orgs` VARCHAR(300) NULL DEFAULT NULL COMMENT '可见机构' COLLATE 'utf8_bin', `visible_type` SMALLINT(6) NOT NULL COMMENT '1:按机构选择(机构下的教师和学生都可见) 2年级下对应专业学生可见(毕业离校通知和其他通知处理方式不一致)', `visible_grades` VARCHAR(300) NULL DEFAULT NULL COMMENT '添加年级作为通知权限控制,保存年级的id,@隔开' COLLATE 'utf8_bin', `type_id` INT(11) NOT NULL COMMENT '通知类型', `pk_id` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`notice_id`) ) COLLATE='utf8_bin' ENGINE=InnoDB SELECT DISTINCT N.notice_id,N.title,N.publish_date,N.user_id,N.user_name,N.visible_type,N.visible_orgs, IFNULL(NR.isread,0) AS isread FROM ( SELECT * FROM commonuser.notice WHERE type_id= 14 AND publish_date >= '2014-09-01 00:00:00')N LEFT JOIN commonuser.notice_user_record NR ON (NR.notice_id=N.notice_id AND NR.info_id = 738) WHERE (N.visible_type=1 AND N.visible_orgs LIKE '%@21@%') -- 组织机构 OR (N.visible_type = 2 AND N.visible_orgs LIKE '%@25@%' AND N.visible_grades LIKE '%@7@%') -- 年级和专业 ORDER BY publish_date DESC
页面:
<input type="hidden" id="visibleOrgs_in" value="${notice.visibleOrgs}" /> <input type="hidden" id="visibleGrades_in" value="${notice.visibleGrades}" /> <pre name="code" class="html">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="limit" uri="http://www.yineng.com/limit"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); %> <div style="margin-left: 120px;"> <table cellpadding="8" cellspacing="8"> <tr> <c:forEach var="x" step="1" items="${requestScope.gradeList}" varStatus="status"> <td> <td valign="top"><input type="checkbox" name="grade_ids" value="${x.gradeId }" onclick="allSel_specity(this)" /> </td> <td valign="top"> ${x.gradeName } </td> </td> </c:forEach> </tr> </table> <table cellpadding="8" cellspacing="8"> <tr> <c:forEach var="x" step="1" items="${requestScope.voList}" varStatus="status"> <td valign="top"> <input type="checkbox" name="specSubiect_ids" value="${x.speSubjectId }" onclick="allSel_speSubject(this,'${x.speSubjectId }')" /> </td> <td valign="top"> ${x.speSubjectName }</br> <c:forEach var="y" step="1" items="${x.specityVos}" varStatus="sta"> <input id="specityIds${y.specityId }" type="checkbox" name="specityIds${x.speSubjectId }" value="${y.specityId }" /> ${y.specityName }</br> </c:forEach> </td> <c:if test="${(status.index+1) % 5 == 0 }"> 每5个则换行 </tr> <tr> <td height="10px;"></td> </tr> <tr> </c:if> </c:forEach> </tr> </table> </div> <script type="text/javascript"> $(function(){ //初始化年级 var visibleType=$("input[type=radio][name=visibleType]:checked").val(); if(visibleGrades != undefined && visibleGrades != null && visibleGrades != ""){ $("input[name ='grade_ids']").each(function(){ if(("@"+$(this).val()+"@").indexOf(visibleGrades) != -1){ $(this).attr("checked",'true');// 初始化已经选择的选项 } }); } var visibleType=$("input[type=radio][name=visibleType]:checked").val(); if(visibleOrgs != undefined && visibleOrgs != null && visibleOrgs != ""){ visibleOrgs = visibleOrgs.substring(1,visibleOrgs.length-1); var orgs = visibleOrgs.split("@"); for(var i = 0;i<orgs.length;i++){ var ch_id = "specityIds" + orgs[i]; $("#" + ch_id).attr("checked",'true');// 初始化已经选择的选项 } } load_button_css(); //加载btn样式 }); </script>
主要的js方法
function allSel_speSubject(obj,id){ var ischeck = obj.checked; var ch_name = "specityIds" + id; if(ischeck){ $("[name="+ch_name+"]").attr("checked",'true');//全选 } else{ $("[name="+ch_name+"]").removeAttr("checked");//取消全选 } } function allSel_specity(obj){ var ischeck = obj.checked; if(ischeck){ $("[name=specSubiect_ids]").attr("checked",'true');//全选 $("input[name^='specityIds']").attr("checked",'true');//全选 } else{ if($("input[type=checkbox][name=grade_ids]:checked").length == 0){ $("[name=specSubiect_ids]").removeAttr("checked");//取消全选 $("input[name^='specityIds']").removeAttr("checked");//取消全选 } } } //保存通知的可见范围 saveOrUpdateVisiblePerson = function(){ var visibleType=$("input[type=radio][name=visibleType]:checked").val();//可见类型 是机构还是年级+专业 var orgIds = ''; //组织机构 var specityIds = '';//专业的选择id var gradeIds='';//年级的选择项id var s = '@'; if(visibleType ==2){ $("input[name *='grade_ids']:checked").each(function(){ //获取选择年级 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择年级!','信息', 'error'); return; } gradeIds = s; //选择的年级 s = '@'; $("input[name *='specityIds']:checked").each(function(){ //获取选择专业 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择专业!','信息', 'error'); return; } specityIds = s;//选择的专业 }else{ $("input[name *='org_ids']:checked").each(function(){ //获取选择的组织机构 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择组织机构!','信息', 'error'); return; } orgIds = s; } $.ligerDialog.waitting('请稍候...'); $.ajax({ type: "POST", url: '<%=path%>/notice/notice!saveOrUpdateVisiblePerson.action', dataType:"html", data:{ 'noticeId':noticeId, 'visibleType':visibleType, 'orgIds':orgIds, 'gradeIds':gradeIds, 'specityIds':specityIds }, success: function(response){ $.ligerDialog.closeWaitting(); backIndexPage(); $.ligerDialog.alert('操作成功!','信息', 'success'); }, error:function(){ $.ligerDialog.closeWaitting(); $.ligerDialog.alert('加载失败!','信息', 'error'); } }); };
相关文章推荐
- JSP+XML的带权限控制的类似QQ的菜单(只需配置xml就能生成菜单)
- Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- SubVersion版本控制服务器端的目录访问权限配置
- XCommunity权限控制和配置体系
- IBatisNet/IBatis动态条件查询XMl映射配置终极解决方案实例
- [Ver 1.1.3] Subversion权限控制配置
- JSP权限控制
- CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案的实现 -- 概要
- MOSS字段编辑权限控制方案的实现(1)-管理页面的开发和配置信息的持久化
- [BI] 通用数据级权限控制解决方案的实现(一):Cube中的自定义DLL
- 用定制标签库和配置文件实现对JSP页面元素的访问控制
- Castle.ActiveRecord的初始化配置补充及配置封装的解决方案
- JSP权限控制(二)
- CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案(v1.0)
- MOSS字段编辑权限控制方案(4)-打包解决方案
- 权限如何控制页面控件显示的解决方案
- JSP权限控制(一)
- CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案的实现 -- 概要
- 配置系统未能初始化 错误的解决方案