使用struts-menu制作树型菜单实例 (转)

sql 代码
  1. 创建数据库表   
  2. CREATE TABLE `menu_item` (   
  3.   `id` bigint(20) NOT NULL default '0',   
  4.   `parent_name` varchar(30) default NULL,   
  5.   `name` varchar(30) default NULL,   
  6.   `title` varchar(30) default NULL,   
  7.   `description` varchar(50) default NULL,   
  8.   `location` varchar(255) default NULL,   
  9.   `target` varchar(10) default NULL,   
  10.   `onclick` varchar(100) default NULL,   
  11. `onmouseover` varchar(100) default NULL,
  12.   `onmouseout` varchar(100) default NULL,   
  13.   `image` varchar(50) default NULL,   
  14.   `altImage` varchar(30) default NULL,   
  15.   `tooltip` varchar(100) default NULL,   
  16.   `roles` varchar(100) default NULL,   
  17.   `page` varchar(255) default NULL,   
  18.   `width` varchar(5) default NULL,   
  19.   `height` varchar(5) default NULL,   
  20.   `forward` varchar(50) default NULL,   
  21.   `action` varchar(50) default NULL,   
  22.   PRIMARY KEY  (`id`)   
  23. );   
  24. INSERT INTO menu_item (id, name, title) VALUES (1,'DatabaseMenu','Database Menu');   
  25. INSERT INTO menu_item (id, parent_name, name, title, location) VALUES (2,'DatabaseMenu','Yahoo','Yahoo Mail','http://mail.yahoo.com');   
  26. INSERT INTO menu_item (id, parent_name, name, title, location) VALUES(3,'DatabaseMenu','JavaBlogs','JavaBlogs','http://javablogs.com');
  27. INSERT INTO menu_item (id, name, title, location) VALUES (4,'StandaloneMenu','Standalone Menu','http://raibledesigns.com');   

struts-menu.tld<o:p></o:p>

struts-menu-el.tld<o:p></o:p>

menu-config.xml

放到 /WEB-INF/ 目录

struts-menu-2.3.jar<o:p></o:p>

velocity-1.4.jar<o:p></o:p>

velocity-tools-view-1.0.jar

<o:p>commons-lang-2.0.jar</o:p>

放到 /WEB-INF/lib/ 目录

globalMacros.vm放到 /src/ 目录

以上大多文件在下载的struts-menu里带了有

<o:p></o:p><o:p>
java 代码
  1.   
  2. public class FindAction extends Action {   
  3.   
  4.     public ActionForward execute(   
  5.         ActionMapping mapping,   
  6.         ActionForm form,   
  7.         HttpServletRequest request,   
  8.         HttpServletResponse response) {   
  9.         //创建   
  10.         Session session=HibernateSessionFactory.getSession();   
  11.         //创建事务   
  12.         Transaction tx=session.beginTransaction();   
  13.         //创建对话   
  14.         Query query=session.createQuery("FROM MenuItem m order by id");   
  15.         List list=query.list();   
  16.         //事务提交   
  17.         tx.commit();   
  18.         if(list.size()<0)   
  19.             return mapping.getInputForward();   
  20.         MenuRepository repository = new MenuRepository();   
  21.         HttpSession httpsession=(HttpSession)request.getSession();   
  22.         ServletContext application=(ServletContext)httpsession.getServletContext();   
  23.         MenuRepository defaultRepository = (MenuRepository)application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);   
  24.         repository.setDisplayers(defaultRepository.getDisplayers());   
  25.         for (int i=0; i < list.size(); i++) {   
  26.             MenuComponent mc = new MenuComponent();   
  27.             MenuItem mi=(MenuItem) list.get(i);   
  28.             String name = mi.getName();   
  29.             mc.setName(name);   
  30.             String parent = (String) mi.getParentName();   
  31.             System.out.println(name + ", parent is: " + parent);   
  32.             if (parent != null) {   
  33.                 MenuComponent parentMenu = repository.getMenu(parent);   
  34.                 if (parentMenu == null) {   
  35.                     System.out.println("parentMenu '" + parent + "' doesn't exist!");   
  36.                     // create a temporary parentMenu   
  37.                     parentMenu = new MenuComponent();   
  38.                     parentMenu.setName(parent);   
  39.                     repository.addMenu(parentMenu);   
  40.                 }   
  41.                 mc.setParent(parentMenu);   
  42.             }   
  43.             String title = (String)mi.getTitle();   
  44.             mc.setTitle(title);   
  45.             String location = (String) mi.getLocation();   
  46.             mc.setLocation(location);   
  47.             repository.addMenu(mc);   
  48.         }   
  49.         request.setAttribute("repository", repository);   
  50.         return mapping.findForward("okGo");   
  51.     }   
  52. }   
< /o:p>
  • <!---->
    1. <head>  
    2.     <title>Dynamic, Database-driven Menu</title>  
    3.     <link rel="stylesheet" type="text/css" media="all" 
    4.         href="<c:url value="/styles/menuExpandable.css"/>" />  
    5.     <script type="text/javascript" 
    6.         src="<c:url value="/scripts/menuExpandable.js"/>"></script>  
    7.     <link rel="stylesheet" type="text/css" media="all" 
    8.         href="<c:url value="/styles/xtree.css"/>" />  
    9.     <script type="text/javascript" 
    10.         src="<c:url value="/scripts/xtree.js"/>"></script>  
    11.     <link rel="stylesheet" type="text/css" media="all" 
    12.         href="<c:url value="/styles/global.css"/>" />  
    13.     <script type="text/javascript">  
    14.         /* Function for showing and hiding elements that use 'display:none' to hide */ 
    15.         function toggleDisplay(targetId) {  
    16.             if (document.getElementById) {  
    17.                 target = document.getElementById(targetId);  
    18.                 if (target.style.display == "none"){  
    19.                     target.style.display = "";  
    20.                 } else {  
    21.                     target.style.display = "none";  
    22.                 }  
    23.             }  
    24.         }  
    25.     </script>  
    26. </head>  
    27. <body>  
    28.     <div class="dynamicMenu">  
    29.         <menu:useMenuDisplayer name="ListMenu" repository="repository">  
    30.             <menu:displayMenu name="DatabaseMenu"/>  
    31.             <menu:displayMenu name="StandaloneMenu"/>  
    32.         </menu:useMenuDisplayer>  
    33.     </div>  
    34.     <div class="dynamicMenu tree">  
    35.     <script type="text/javascript">  
    36.         <menu:useMenuDisplayer name="Velocity" config="/templates/xtree.html" 
    37.             repository="repository">  
    38.           <c:forEach var="menu" items="${repository.topMenus}">  
    39.             <menu-el:displayMenu name="${menu.name}"/>  
    40.           </c:forEach>  
    41.         </menu:useMenuDisplayer>  
    42.     </script>  
    43.     </div>  
    44. </body> 
    java 代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值