<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>