根据用户权限,动态显示用户菜单
用户权限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(";--------------------获取用户对应的系统应用菜单结束-------------------------";);