首先建立一个数据表menu
mId 菜单主键 name 菜单名称 url 菜单链接 father 低级菜单ID sub 是否最底层菜单(用于判断是否还可以继续展开) target 菜单链接目标(用ajax方式打开时作为显示id) pa 菜单参数(这项用于ajax方式打开菜单)
制作一个菜单对象类
class Menu{ private int mId; private String name; ...//其它成员
public getMid(){ return mId; } public setMid(int mId){ this.mId = mId; } ....//其它成员的get set方法, }
另一个是操作类
class MenuOpt(){ public Vector getMenus(int father){ Vector vector = new Vector(); //这里是取得父级菜单ID为father的全部菜单 //并封装进Vector的一个对象中。。 return vector; } }
其次就是一般的jsp文件了。但要注意以前说过的,不要包含<html><body>标签! menu.jsp:
<%@page contentType="text/html; charset=GB2312"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--前面用到了JSTL的标签定义(学JSP的强烈推荐!)--> <jsp:useBean id="menu" scope="page" class="ycoe.basic.MenuOpt"/> <jsp:setProperty name="menu" property="father" value="${param.father}"/> <div> <c:forEach var="m" items="${menu.vector}" varStatus = "c"> <c:choose> <c:when test="${m.sub eq 'Y'}"> <div onClick="showMenu('${m.mid}','${m.url}','${m.target}','father=${m.mid}')"> <img src="pic/menu0.gif" id="img${m.mid}" alt="" style=" cursor:hand;"> <a href="#" class="text1">${m.name}</a> </div> <div style="display:none;" id="tr${m.mid}"> <div style="padding-left:12pt" id="${m.mid}"></div> </div> </c:when> <c:otherwise> <div onclick="openMenu('${m.url}','${m.target}','${m.pa}');"> <img src="pic/menu1.gif" id="img${m.mid}" alt=""> <a href="#" class="text1">${m.name}</a> </div> </c:otherwise> </c:choose> </c:forEach> </div>
menu.js:
//operMenu(打开下拉菜单的ID,打开的地址,链接打开的目标,参数)。 //这是用在menu.jsp的方法 function showMenu(id,url,target,param){ var trObj = document.getElementById("tr"+id); var tdObj = document.getElementById(id); //try{ if(document.getElementById("tr"+id).style.display == "none"){ //显示菜单 if(tdObj.innerHTML == null || tdObj.innerHTML == ""){ //提取数据 document.getElementById("tr"+id).style.display = ""; document.getElementById("img"+id).src = "pic/menu2.gif" Bcandy(id,"page/menu.jsp",param,""); openMenu(url,target,param); }else{ //如果里面有内容,直接显示 document.getElementById("tr"+id).style.display = ""; document.getElementById("img"+id).src = "pic/menu2.gif" openMenu(url,target,param); } //Bcandy(target,url,param,"");//打开菜单链接 }else{ //隐藏菜单 document.getElementById("tr"+id).style.display = "none"; document.getElementById("img"+id).src = "pic/menu0.gif" } //}catch(e){} }
//打开菜单 function openMenu(url,target,param){ //这里不用我写了吧。有好几种实现方法,建议使用ajax实现! }
出处:蓝色理想
责任编辑:moby
上一页 Ajax 基础 [1] 下一页 基于Ajax的无限级菜单实例 [3]
◎进入论坛网络编程版块参加讨论
|