java 代码
- <%@ page contentType="text/html; charset=GBK" %>
- <%@ page import="java.util.*"%>
- <%!
- public void addMenu(List list, Map map, HttpServletRequest request) throws Exception
- {
- //判断map的url属性是否为空,若为空则认为是最终子菜单
- if (map.get("url") != null && !"".equals(map.get("url")))
- {
- //判断权限号是否被允许
- String power = (String) map.get("power");
- boolean b = true;//hasPerm(request, power);
- //允许访问
- if (b)
- {
- map.put("display", "true"); //若权限号被允许则设置display为true,并添加到list中
- list.add(map);
- //将父菜单的display属性设置为true
- String father = (String) map.get("father");
- if (father != null)
- {
- setParentDisplay(list, father);
- }
- }
- }
- //非最终子菜单
- else
- {
- if ("".equals(map.get("father"))) //默认顶级菜单的display为true
- map.put("display", "true");
- //若url为空则直接添加到list中
- list.add(map);
- }
- }
- //用于设置父菜单的display属性为true
- public void setParentDisplay(List list, String father)
- {
- Iterator it = list.listIterator();
- Map map = null;
- while (it.hasNext())
- { //循环list中的元素
- map = (HashMap) it.next();
- if (father.equals(map.get("name")))
- { //判断所获得的元素的name属性是否与指定的值相等
- if (map.get("display") == null)
- {
- map.put("display", "true");
- father = (String) map.get("father");
- if (!"".equals(father) && father != null)
- {
- setParentDisplay(list, father);
- }
- }
- break;
- }
- }
- }
- //将无效的元素移除
- public void removeDisplay(List list)
- {
- Iterator it = list.listIterator();
- Map map = null;
- while (it.hasNext())
- { //循环list中的元素
- map = (HashMap) it.next();
- if (map.get("display") == null)
- {
- it.remove();
- }
- }
- }
- //将列表打印出来
- public String MenuPrint(List list)
- {
- Iterator it = list.listIterator();
- Map map = null;
- String father = "";
- StringBuffer result = new StringBuffer(1000);
- int i = 0;
- int j = 0;
- // this "k" statement is addad
- int k = 0;
- while (it.hasNext())
- {
- map = (Map) it.next();
- while (!father.equals(map.get("father")))
- {
- result.append("</table>\n");
- if (!"".equals(map.get("father")))
- {
- result.append("</td>\n</tr>\n");
- }
- father = findFather(list, father);
- i--;
- }
- if ("".equals(map.get("father")) && k == 0)
- {
- j++;
- k = k + 1;
- result.append("<table width=\"198\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
- result.append("<tr>\n");
- result.append("<td align=\"left\" colspan=2><a οnclick=\"openclose(img_").
- append(map.get("name")).
- append(",").
- append(map.get("name")).
- append(");\"><img src=\"./images/channel/close.gif\" align=\"left\" border=\"0\" name=\"img_").
- append(map.get("name")).
- append("\">").
- append(map.get("text")).
- append("</a></td>\n");
- result.append("</tr>\n");
- i++;
- result.append("<tr valign=\"top\">\n<td width=\"14px\"></td><td>\n");
- result.append("<table id=\"" + map.get("name") + "\" style=\"display:none\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
- father = (String) map.get("name");
- }
- else if (father.equals(map.get("father")))
- {
- result.append("<tr>\n");
- if ("".equals(map.get("url")) || map.get("url") == null)
- {
- j++;
- i++;
- result.append("<td align=\"left\" colspan=2><a οnclick=\"openclose(img_").
- append(map.get("name")).
- append(",").
- append(map.get("name")).
- append(");\"><img src=\"./images/channel/close.gif\" align=\"left\" border=\"0\" name=\"img_").
- append(map.get("name")).
- append("\">").
- append(map.get("text")).
- append("</a></td>\n");
- result.append("</tr>\n");
- result.append("<tr valign=\"top\">\n<td width=\"14px\"></td>");
- result.append("<td>\n");
- result.append("<table id=\"" + map.get("name") + "\" style=\"display:none\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
- father = (String) map.get("name");
- }
- else
- {
- // this "if" statement is addad
- if ("".equals(map.get("father")))
- {
- result.append("<td align=\"left\" colspan=2><a><img src=\"./images/channel/close.gif\" align=\"left\" border=\"0\" name=\"img_").
- append(map.get("name")).
- append("\"></a><a href=\"").
- append(map.get("url")).
- append("\" target=\"_self\">").
- append(map.get("text")).
- append("</a></td>\n");
- result.append("</tr>\n");
- }
- else
- {
- result.append("<td align=\"left\" colspan=2><a><img src=\"./images/channel/circ.gif\" align=\"left\" border=\"0\" name=\"img_").
- append(map.get("name")).
- append("\"></a><a href=\"javascript:openWin('").
- append(map.get("url")).
- append("')\">").
- append(map.get("text")).
- append("</a></td>\n");
- result.append("</tr>\n");
- }
- }
- }
- }
- while (!"".equals(father))
- {
- result.append("</table>\n</td>\n</tr>\n");
- father = findFather(list, father);
- }
- result.append("</table>\n");
- return result.toString();
- }
- //用于查找上一级父菜单
- public String findFather(List list, String father)
- {
- Iterator it = list.listIterator();
- Map map = null;
- while (it.hasNext())
- {
- map = (Map) it.next();
- if (father.equals(map.get("name")))
- {
- father = (String) map.get("father");
- return father;
- }
- }
- return null;
- }
- public void addMenu(String name,String text,String url,String power,String father,Map map,List list,HttpServletRequest request) throws Exception
- {
- //Map map = null;
- //List list = new ArrayList();
- map = new HashMap();
- map.put("name", name);
- map.put("text", text);
- map.put("url", url);
- map.put("power", power);
- map.put("father", father);
- try
- {
- addMenu(list, map, request);
- }
- catch(Exception e)
- {
- }
- }
- %>
- <%
- String path = request.getContextPath();
- //数据区
- Map map = null;
- List list = new ArrayList();
- //level0
- map = new HashMap();
- map.put("name", "level0");
- map.put("text", "根菜单");
- map.put("url", "");
- map.put("power", "");
- map.put("father", "");
- addMenu(list, map, request);
- //level1
- map = new HashMap();
- map.put("name", "level10");
- map.put("text", "搜索引擎");
- map.put("url", "");
- map.put("power", "");
- map.put("father", "level0");
- addMenu(list, map, request);
- //level2
- map = new HashMap();
- map.put("name", "level20");
- map.put("text", "百度");
- map.put("url", "http://www.baidu.com");
- map.put("power", "");
- map.put("father", "level10");
- addMenu(list, map, request);
- map = new HashMap();
- map.put("name", "level21");
- map.put("text", "GOOGLE");
- map.put("url", "http://www.google.com");
- map.put("power", "");
- map.put("father", "level10");
- addMenu(list, map, request);
- //level1
- map = new HashMap();
- map.put("name", "level11");
- map.put("text", "消息网站");
- map.put("url", "");
- map.put("power", "");
- map.put("father", "level0");
- addMenu(list, map, request);
- //level2
- map = new HashMap();
- map.put("name", "level22");
- map.put("text", "人民网");
- map.put("url", "http://www.people.com.cn");
- map.put("power", "");
- map.put("father", "level11");
- addMenu(list, map, request);
- removeDisplay(list);
- String userName = "King";
- %>
- <html>
- <head>
- <title>导航菜单</title>
- <STYLE type="text/css">
- BODY {
- FONT-SIZE: 9pt; FONT-FAMILY: sans-serif;background-color:#A9C3F0;
- }
- A
- {
- COLOR: 000000; TEXT-DECORATION: none
- }
- A:hover
- {
- COLOR: cc3300; TEXT-DECORATION: none
- }
- A:link {
- FONT-FAMILY: sans-serif; TEXT-DECORATION: none
- }
- A:active {
- FONT-FAMILY: sans-serif; TEXT-DECORATION: none
- }
- A:visited {
- FONT-FAMILY: sans-serif; TEXT-DECORATION: none
- }
- B {
- FONT-SIZE: 14px; COLOR: #000000
- }
- TABLE
- {
- font:9pt;color: #cc3300
- }
- TD {
- FONT-SIZE: 12px;color:#363636
- }
- </STYLE>
- <script language="JavaScript">
- function openclose(param1, param)
- {
- if (param.style.display == "none")
- {
- param.style.display = "";
- param1.src = "./images/channel/open.gif";
- }
- else
- {
- param.style.display = "none";
- param1.src = "./images/channel/close.gif";
- }
- }
- function openWin(url)
- {
- parent.LoginTime.location.reload();
- //window.open(url,"forum");
- parent.forum.location = url;
- }
- window.onload = function(){
- //openclose(img_level0, level0);
- openAllMenu();
- }
- function openAllMenu()
- {
- var tb = document.getElementsByTagName("TABLE");
- for (var i = 0; i < tb.length; i++)
- {
- if (tb[i].id == null || tb[i].id == "") continue;
- openclose(eval("img_" + tb[i].id), tb[i]);
- }
- }
- CollectGarbage();
- </script>
- </head>
- <body topmargin=10 leftmargin=0>
- <table width="100%" height="100%" border="0" align="center" cellpadding="1" cellspacing="0" class="blue">
- <tr>
- <td cellspacing="2" height="23" background="./images/bgwelcome.png"> <strong>欢迎您-<%=(String) userName%></strong></td>
- </tr>
- <tr>
- <td valign="top" height="100%" background="./images/bg.png"><%=MenuPrint(list)%></td>
- </tr>
- </table>
- </body>
- </html>