struts-Menu动态设置

来源:互联网 发布:局域网代理上网软件 编辑:程序博客网 时间:2024/06/17 11:37
 web.xml中的配置:
 <listener>
          <listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
 </listener>
 <context-param>
          <param-name>menuConfigLocation</param-name>
          <param-value>/WEB-INF/menu-config.xml</param-value>
 </context-param>


menu-config.xml中的配置:
<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="com.qqw.crm.common.menu.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"/> <Displayer
   name="Xtree" type="net.sf.navigator.displayer.XtreeMenuDisplayer"/>
   <Displayer name="CSSlist"
   type="net.sf.navigator.displayer.CSSListMenuDisplayer"/>
  -->
      </Displayers>
     <Menus>
     </Menus>
</MenuConfig>


action中动态配置  
            HttpSession session = request.getSession();
            ServletContext application = (ServletContext) session.getServletContext();
            MenuRepository repository = new MenuRepository();
            MenuRepository defaultRepository = (MenuRepository) application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
            repository.setDisplayers(defaultRepository.getDisplayers());//显示菜单的显示模式
           for (Bcs_menu_nodes menuNodes : menuList) {
            //循环当前节点
                      MenuComponent menu = repository.getMenu(menuNodes.getName());
                      if (menu == null) {
                                  MenuComponent mc = new MenuComponent();
                                  mc.setName(menuNodes.getId()+"");//菜单节点名字不能出现重复
                                  Long parentId = menuNodes.getParent_id();
                                  for (Bcs_menu_nodes menuNodes1 : menuList) {
                                  //获取当前节点的父节点
                                          if (parentId.equals(menuNodes1.getId())) {
                                                   String parentName = menuNodes1.getName();
                                                    MenuComponent parentMenu = repository.getMenu(parentName);
                                                    //如果当前节点的父节点不为null,则直接设置;否则建立新的节点
                                                  if (parentMenu == null) {
                                                        parentMenu = new MenuComponent();
                                                        parentMenu.setName(menuNodes1.getId()+"");//设置节点名称
                                                         parentMenu.setTitle(parentName);//设置节点Title
                                                        repository.addMenu(parentMenu);//添加节点到repository容器中
                                                  }
                                        mc.setParent(parentMenu);//设置父节点
                                        break;
                                         }
                                 }
                            mc.setTitle(menuNodes.getName());
                            mc.setTarget("main");//设置菜单节点的Target
                           mc.setWidth("100");//设置菜单节点显示的宽度
                           mc.setLocation(menuNodes.getDescription());//设置菜单节点路径
                             repository.addMenu(mc);
   }
  }
  request.setAttribute("repository", repository);


index.jsp页面中配置:
<%@ taglib uri="/WEB-INF/struts-menu.tld" prefix="menu"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="s" uri="/struts-tags" %>

                <menu:useMenuDisplayer name='CoolMenu4' bundle="org.apache.struts.action.MESSAGE"  repository="repository">
       <c:forEach var="menu" items="${repository.topMenus}">
        <c:if test="${menu.title==' 工作台'}">
              <menu:displayMenu name="${menu.name}"></menu:displayMenu>
          </c:if>
       </c:forEach>
       <c:forEach var="menu" items="${repository.topMenus}">
          <c:if test="${menu.title!='工作台'}">
              <menu:displayMenu name="${menu.name}"></menu:displayMenu>
          </c:if>
            </c:forEach>
   </menu:useMenuDisplayer>

原创粉丝点击