`
xgbjmxn
  • 浏览: 260797 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

struts-menu (权限动态菜单实现)(转)

阅读更多
struts-menu (权限动态菜单实现)(转)

package com.test.struts.action;
import com.Hibernate.SessionFactory;

public class FindAction extends Action {
private static final String role="admin";

private void buildMenuPermissions(HttpServletRequest request) {
PermissionsAdapter permession = new PermissionsAdapter() {
public boolean isAllowed(MenuComponent menu) {
if(role.equals("贾00")){
return !"我".equalsIgnoreCase(menu.getName());
}
if(role.equals("我")){
return !"贾00".equalsIgnoreCase(menu.getName());
}
return true;
}
};
request.setAttribute("examplesPermession", permession);
}

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
//权限控制
buildMenuPermissions(request);
//创建连接
Session session=SessionFactory.currentSession();
//创建事务
Transaction tx=session.beginTransaction();
//创建对话
Query query=session.createQuery("FROM MenuItem m order by id");
List list=query.list();
//事务提交
tx.commit();
if(list.size()<0)
return mapping.getInputForward();
MenuRepository repository = new MenuRepository();
HttpSession httpsession=(HttpSession)request.getSession();
ServletContext application=(ServletContext)httpsession.getServletContext();
MenuRepository defaultRepository = (MenuRepository)application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
for (int i=0; i < list.size(); i++) {
MenuComponent mc = new MenuComponent();
MenuItem mi=(MenuItem) list.get(i);
String name = mi.getName();
mc.setName(name);
String parent = (String) mi.getParentName();
System.out.println(name + ", parent is: " + parent);
if (parent != null) {
MenuComponent parentMenu = repository.getMenu(parent);
if (parentMenu == null) {
parentMenu = new MenuComponent();
parentMenu.setName(parent);
repository.addMenu(parentMenu);
}
mc.setParent(parentMenu);
}
String title = (String)mi.getTitle();
mc.setTitle(title);
String location = (String) mi.getLocation();
mc.setLocation(location);
repository.addMenu(mc);
}
request.setAttribute("repository", repository);
return mapping.findForward("okGo");
}


}
menu-config.xml 配置如下:

<?xml version="1.0" encoding="UTF-8" ?>

<MenuConfig>

<Displayers>
<Displayer name="DropDown"
type="net.sf.navigator.displayer.DropDownMenuDisplayer"/>
<Displayer name="Simple"
type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>
<Displayer name="CoolMenu"
type="net.sf.navigator.displayer.CoolMenuDisplayer"/>
<Displayer name="CoolMenu4"
type="net.sf.navigator.displayer.CoolMenuDisplayer4"/>
<Displayer name="MenuForm"
type="net.sf.navigator.example.PermissionsFormMenuDisplayer"/>
<Displayer name="ListMenu"
type="net.sf.navigator.displayer.ListMenuDisplayer"/>
<Displayer name="TabbedMenu"
type="net.sf.navigator.displayer.TabbedMenuDisplayer"/>
<Displayer name="Velocity"
type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
</Displayers>

<Menus>

</Menus>

</MenuConfig>

struts.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards >
<forward name="okGo" path="/ok.jsp" />

</global-forwards>

<action-mappings >
<action path="/find" type="com.test.struts.action.FindAction" />

</action-mappings>

<message-resources parameter="com.test.struts.ApplicationResources" />
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
<set-property property="menuConfig" value="/WEB-INF/menu-config.xml" />
</plug-in>
</struts-config>

menu.jsp如下:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu" %>
<%@ taglib uri="/WEB-INF/struts-menu-el.tld" prefix="menu-el" %>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Dynamic, Database-driven Menu</title>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/menuExpandable.css"/>" />
<script type="text/javascript"
src="<c:url value="/scripts/menuExpandable.js"/>"></script>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/xtree.css"/>" />
<script type="text/javascript"
src="<c:url value="/scripts/xtree.js"/>"></script>
<link rel="stylesheet" type="text/css" media="all"
href="<c:url value="/styles/global.css"/>" />

</head>
<body>
<div class="dynamicMenu">
<menu:useMenuDisplayer name="ListMenu" permissions="examplesPermession" bundle="examplesBundle" repository="repository">
<menu:displayMenu name="屈驾"/>
<menu:displayMenu name="贾媛媛"/>
</menu:useMenuDisplayer>
</div>

</body>
</html>
来自: http://hi.baidu.com/bnln1/blog/item/eb9cc1fae318a76c024f56f5.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics