您的位置:首页 > 其它

根据用户权限,动态显示用户菜单

2017-04-10 17:34 579 查看
用户权限userPermission,比如[1][2][3][4][5][6][7][8][9][10],这里的数字对应着菜单id号,所有菜单allPermission,比如[1][2][3][4][5][6][7][8][9][10][11][12][13][14]...

这样只要修改userPermission里的数字,就能动态显示菜单,记得刷新一下。

viewUser.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<% String allPermission=(String)request.getAttribute("allMenu"); %>
<% String userPermission=(String)request.getAttribute("userPermission"); %>

<html:html xhtml="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>修改权限</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){

});
</script>

<script language="JavaScript" type="text/javascript">
<!--
function selectKind(the){
var obj = the;
var container = document.getElementById("kind_" + obj.name);
for(var i=0;i<container.getElementsByTagName("input").length;i++)
{
//container.getElementsByTagName("input")[i].disabled = obj.checked;
container.getElementsByTagName("input")[i].checked = obj.checked;;
}
}

function getCheckedBox(){
//var container = document.getElementById("checks");
var checkNum=document.getElementsByTagName("input").length;
var values="";
for(var i=0;i<checkNum;i++){
if(document.getElementsByTagName("input")[i].checked){
values+="["+document.getElementsByTagName("input")[i].value+"]";
}
}
//alert(values);
window.location.href("userManage.portal?action=sendUpdate"+"&permissions="+values+"&id="+document.forms[0].id.value);
}

-->
</script>

</head>
<body>
<html:form action="/userManage.portal">
<html:hidden property="action" />
<html:hidden property="id" />
<table border="0" cellpadding="0" cellspacing="0" width="80%" align="center">
<logic:iterate id="module" name="parentVector" type="com.worthtech.app.bean.Module" indexId="index">
<% int i = ((java.lang.Integer) pageContext.findAttribute("index")).intValue(); %>

<% if(allPermission.indexOf("["+module.getId()+"]")!=-1){%>
<table border="0" width="400">
<tr>
<td>
<div align="left" >
<% if(userPermission.indexOf("["+module.getId()+"]")!=-1) {%>
<input type="checkbox" value="<%=module.getId() %>" name=<%=i %> onclick="selectKind(this)" checked><%=module.getModuleName()%>
<%}else{ %>
<input type="checkbox" value="<%=module.getId()%>" name=<%=i %> onclick="selectKind(this)"><%=module.getModuleName()%>
<%} %>
</div>
</td>
</tr>
</table>
<%}%>

<div id=<%= "kind_"+i %> style="padding-left:20px">
<table border="0" width="300">
<logic:iterate id="childModule" name="childVector" type="com.worthtech.app.bean.Module">
<%
if(allPermission.indexOf("["+childModule.getId()+"]")!=-1&&childModule.getParentId().intValue()==module.getId().intValue()){
%>
<tr>
<td>
<% if(userPermission.indexOf("["+childModule.getId()+"]")!=-1) {%>
<input type="checkbox" value="<%=childModule.getId()%>" name=<%=i %> checked><%=childModule.getModuleName()%>
<%}else{ %>
<input type="checkbox" value="<%=childModule.getId()%>" name=<%=i %> ><%=childModule.getModuleName()%>
<%} %>
</td>
</tr>
<%
}
%>
</logic:iterate>
</table>
</div>
</logic:iterate>
</table>
<input title="修改权限" class="menuList" onclick="getCheckedBox();" type="button" value="提 交">

<input title="返回" class="menuList" onclick="window.location.href('userManage.portal?action=listUser');" type="button" value="返 回">

</html:form>
</body>
</html:html>


package com.worthtech.app.action;

import java.util.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.worthtech.app.bean.Module;
import com.worthtech.app.bean.User;
import com.worthtech.app.form.UserForm;
import com.worthtech.app.service.BaseService;
import com.worthtech.app.service.ModuleService;
import com.worthtech.app.util.Constant;
import com.worthtech.app.util.PaginationSupport;

public class UserAction extends BaseAction {
private BaseService baseService;
private ModuleService moduleService;
public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response) {
UserForm form=(UserForm)actionForm;
ActionMessages errors = new ActionMessages();
System.out.println("form.getAction()="+form.getAction());
System.out.println("Parameter="+request.getParameter("action"));
String action=request.getParameter("action");

if("listUser".equals(action)){
System.out.println("----------------list user -----------------");
if(request.getParameter("queryAll")!=null){
form.close();
initUserListAll(mapping,form,request,response);
return mapping.findForward("listUser");
}
initUserList(mapping,form,request,response);
return mapping.findForward("listUser");
}
if("delete".equals(action)){
System.out.println("----------------delete user -----------------");
String id=request.getParameter("id");
User instance=(User)this.getBaseService().get("User", id);
this.getBaseService().delete(instance);
System.out.println("-------delete success------------");
initUserList(mapping,form,request,response);
return mapping.findForward("listUser");
}
if("update".equals(action)){
System.out.println("----------------update user -----------------");
String id=request.getParameter("id");
form.setId(id);
User instance=(User)this.getBaseService().get("User", id);
//			初始化菜单,根据MenuLevel=0代表根目录从0开始
List allModuleList = this.getModuleService().getModuleTree(Integer.parseInt(instance.getMenuLevel()));//1实体终端交易,2用户管理

Iterator menu = allModuleList.iterator();
Vector parentV = new Vector();
Vector childV = new Vector();
Module module;
String allMenu="";
while (menu.hasNext()) {
module = (Module) menu.next();
if (module.getParentId().intValue() == 0) {//0表示父菜单
parentV.add(module);
} else {
childV.add(module);
}
allMenu+="["+module.getId()+"]";
}
//			System.out.println("allPermission="+allPermission);
//			System.out.println("userPermission="+user.getTelephone());
request.setAttribute("parentVector", parentV);//所以的父菜单
request.setAttribute("childVector", childV);//所以的子菜单
request.setAttribute("allMenu", allMenu);//所有菜单(String型)
request.setAttribute("userPermission", instance.getPermission());//当前用户菜单(String型)
return mapping.findForward("viewUser");
}
if("sendUpdate".equals(action)){
System.out.println("----------------sendUpdate user -----------------");
//			String id=form.getId();
String id=request.getParameter("id");
System.out.println("id="+id);
String permissions=request.getParameter("permissions");
System.out.println("permissions="+permissions);
User instance=(User)this.getBaseService().get("User", id);
instance.setPermission(permissions);
this.getBaseService().update(instance);
System.out.println("---------------update success----------------------");
initUserList(mapping,form,request,response);
return mapping.findForward("listUser");
}
return mapping.findForward("wait");
}
public BaseService getBaseService() {
return baseService;
}
public void setBaseService(BaseService baseService) {
this.baseService = baseService;
}
public void initList(HttpServletRequest request,UserForm form,DetachedCriteria detachedCriteria){
PaginationSupport pagination=this.getBaseService().findPageByCriteria(detachedCriteria, Constant.PAGESIZE, form.getStartIndex());
List list = pagination.getItems();
//		System.out.println("billPayList.size="+list.size());
request.setAttribute("list", list);
request.setAttribute("pagination", pagination);
//		System.out.println("-----------------执行完毕!!!---------------");
}

public void initUserList(ActionMapping mapping, UserForm form,
HttpServletRequest request, HttpServletResponse response){
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);

String keyword_0=form.getSearchName();
if(StringUtils.isNotEmpty(keyword_0)){
detachedCriteria.add(Restrictions.like("userName", "%"+keyword_0+"%"));
}
String keyword_1=form.getSearchDepartment();
if(StringUtils.isNotEmpty(keyword_1)){
if(keyword_1.equals("全部")){//全部
}else{
detachedCriteria.add(Restrictions.like("address", "%"+keyword_1+"%"));
}
}
//		排序
detachedCriteria.addOrder(Order.desc("id"));
//		detachedCriteria.addOrder(Order.desc("addTime"));
initList(request,form,detachedCriteria);
}
public void initUserListAll(ActionMapping mapping, UserForm form,
HttpServletRequest request, HttpServletResponse response){
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);

//		排序
detachedCriteria.addOrder(Order.desc("id"));
//		detachedCriteria.addOrder(Order.desc("addTime"));
initList(request,form,detachedCriteria);
}
public ModuleService getModuleService() {
return moduleService;
}
public void setModuleService(ModuleService moduleService) {
this.moduleService = moduleService;
}
}


左侧菜单页面left.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LEFT</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<script language="JavaScript">
<!--
function doExit(){
if (confirm("您确定要退出本系统吗?")){
window.open("login.portal?action=logout","_parent","");
}
}

//-->
</script>
<script language="JavaScript">
var w=200;
function closenavi() {
w-=200;
if (w>-10) {window.parent.testframeset.cols = ''+w+',*';repeat=setTimeout("closenavi()",10);}
else {clearTimeout(repeat);w=200;}
}

function loginOutPage() {
document.forms[1].SIGN_OFF.click();
}

function initIt(){
divCount = document.all.tags("DIV");
for (i=0; i<divCount.length; i++) {
obj = divCount(i);
if (obj.className == "child" || obj.className == "child1") obj.style.display = "none";
}
}

function expandIt(el) {
obj = eval("page" + el);
obj2 = eval("main" + el);
if (obj.style.display == "none") {
obj.style.display = "block";
}
else {
obj.style.display = "none";
}
}

onload = initIt;

var judge=0;
function expandall(o) {
if (judge==0) {divCount2 = document.all.tags("DIV");
for (i=0; i<divCount2.length; i++) {
obj2 = divCount2(i);
if (obj2.className == "child" || obj.className == "child1" || obj2.style.display == "none")
{obj2.style.display = "block";}
if (obj2.className == "menu")
{
//obj2.all.tags('img')[0].src='images/treeimg/tminus.gif';
obj2.all.tags('img')[0].src='images/openfolder1.gif';
}
}

judge=1;
o.src='images/icon-closeall.gif';
o.alt='全部折叠';
}
else {divCount2 = document.all.tags("DIV");
for (i=0; i<divCount2.length; i++) {
obj2 = divCount2(i);
if (obj2.className == "child" || obj.className == "child1" || obj2.style.display == "block")
{obj2.style.display = "none";}
if (obj2.className == "menu")
{
obj2.all.tags('img')[0].src='images/folder1.gif';
}
}

judge=0;
o.src='images/icon-expandall.gif';
o.alt='全部展开';
}
}

function quit(form) {
window.close()
}

function loginOutPage() {
document.forms[0].SIGN_OFF.click();
}

</script>

</head>

<body bgcolor="#D8DADA" class="bodyTop">

<logic:iterate id="module" name="parentVector" type="com.worthtech.app.bean.Module" indexId="index">
<%
int i = ((java.lang.Integer) pageContext.findAttribute("index")).intValue();
%>
<div id=<%="main" + i%> class="title" onClick="expandIt(<%="" + i%>); return false">
<table class="TableLeftTop" style="margin-top: 10px" width="138"
border="0" cellspacing="0" cellpadding="4">
<tr>
<td background="images/LeftMenuBack.jpg">
<div align="center">
<%=module.getModuleName()%>
</div>
</td>
</tr>
</table>
</div>

<div id=<%="page" + i%> class="child">
<table class="TableLeftView" width="140" border="0" cellspacing="0" cellpadding="0">
<logic:iterate id="childModule" name="childVector" type="com.worthtech.app.bean.Module">
<%
if(childModule.getParentId().intValue()==module.getId().intValue()){
%>
<tr>
<td width="44">
<div align="right">
<img src="images/t.gif" width="19" height="20">
</div>
</td>
<td width="161">
<a href=<%=childModule.getActionUrl()%> target="mainFrame"><%=childModule.getModuleName()%></a>
</td>
</tr>
<%
}
%>
</logic:iterate>
</table>
</div>
</logic:iterate>

<table style="margin-top: 10px" width="140" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td>
<div align="center">
<a href="#" onclick="doExit();">
<img src="images/ico01.gif" width="65" height="15" border="0" class="MouseOver">
</a>
</div>
</td>
<td>
<div align="center">
<a href="login.portal?action=password" target="mainFrame">
<img class="MouseOver" src="images/ico02.gif" width="65" height="15" border="0">
</a>
</div>
</td>
</tr>
</table>

</body>
</html>


获取用户对应的系统应用菜单

// 获取用户对应的系统应用菜单
List allModuleList = this.getModuleService().getModuleTree(
Integer.parseInt(user.getMenuLevel()));//0代表根菜单

Iterator menu = allModuleList.iterator();
Vector parentV = new Vector();
Vector childV = new Vector();
Module m;
while (menu.hasNext()) {
m = (Module) menu.next();
if(user.getPermission().indexOf("["+m.getId()+"]")!=-1){
if (m.getParentId().intValue() == 0) {
parentV.add(m);
} else {
childV.add(m);
}
}
}
request.getSession().setAttribute("parentVector", parentV);
request.getSession().setAttribute("childVector", childV);
//			System.out.println("--------------------获取用户对应的系统应用菜单结束-------------------------");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐