我应该有。
先MARK,明天帮你找!

解决方案 »

  1.   

    失败,我的代码太~~~~~~~~~~那个了。----------------------------------------------------------------
    menu.jsp:<%--
    树型风格菜单
    @author joe
    @req menuFileName 菜单描述文件名(XML文件),必需
    @req menuName 菜单描述结点名,必需
    --%>
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page language="java"%>
    <%@ page import="java.util.*"%>
    <%@ page import="wad2.util.*"%>
    <%@ page import="wad2.vdm.*"%>
    <%
    menu menu = new menu(ConfigValue.getApplicationWadConfigXML()+"\\"+request.getParameter("menuFileName")+".xml","menu","name",request.getParameter("menuName"));
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>欢迎使用VDM2.0版本                                                                        </title>
    <link rel="stylesheet" type="text/css" href="css/vdm.css">
    <script language="javascript" src="js/util.js"></script>
    <STYLE>
    <!--
    body{
    background-color :#ffffff;
    margin-left: 3pt;
    margin-right: 10pt;
    overflow-x: auto;
    font-size: 12px;
    }
    -->
    </STYLE>
    <%
    if (!menu.defaultPage.equals("")){
    if (menu.defaultPage.indexOf("?")>0){
    %>
    <script language="javascript">
    <!--
    parent.detailFrame.location = "<%=menu.defaultPage%>&"+(parent.location+"").substring(1+(parent.location+"").indexOf("?"));
    -->
    </script>
    <%
    }else{
    %>
    <script language="javascript">
    <!--
    parent.detailFrame.location = "<%=menu.defaultPage%>?"+(parent.location+"").substring(1+(parent.location+"").indexOf("?"));
    -->
    </script>
    <%
    }
    }
    %>
    </HEAD>
    <BODY>
    <%!
    String toHTML(menuItem mi){
    String str = "";
    if (mi.href.equals("")){
    str += "<nobr>"+mi.displayName+"</nobr>\r\n";
    }else{
    str += "<nobr><a href=\"#\" tmpHref=\""+mi.href+"\" target=\""+mi.target+"\">"+mi.displayName+"</a></nobr>"+"\r\n";
    }
    if (mi.alChild.size()>0){
    str += "<ol>"+"\r\n";
    for (int i=0;i<mi.alChild.size();i++){
    str += "<li>"+toHTML((menuItem)mi.alChild.get(i))+"</li>"+"\r\n";
    }
    str += "</ol>"+"\r\n";
    }
    return str;
    }
    %>
    <%
    out.println(menu.displayName);
    if (menu.alChild.size()>0){
    out.println("<ol>");
    for (int i=0;i<menu.alChild.size();i++){
    out.println("<li>"+toHTML((menuItem)menu.alChild.get(i))+"</li>");
    }
    out.println("</ol>");
    }
    %>
    </BODY>
    </HTML>
    -----------------------------------------------------------生成的HTML文件:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>欢迎使用VDM2.0版本                                                                        </title>
    <link rel="stylesheet" type="text/css" href="css/vdm.css">
    <script language="javascript" src="js/util.js"></script>
    <STYLE>
    <!--
    body{
    background-color :#ffffff;
    margin-left: 3pt;
    margin-right: 10pt;
    overflow-x: auto;
    font-size: 12px;
    }
    -->
    </STYLE> <script language="javascript">
    <!--
    parent.detailFrame.location = "welcome.jsp?"+(parent.location+"").substring(1+(parent.location+"").indexOf("?"));
    -->
    </script></HEAD>
    <BODY>系统菜单
    <ol>
    <li><nobr>系统管理</nobr>
    <ol>
    <li><nobr><a href="#" tmpHref="logon.jsp" target="detailFrame">登录</a></nobr>
    </li>
    <li><nobr><a href="#" tmpHref="logout.jsp" target="detailFrame">注销</a></nobr>
    </li>
    </ol>
    </li>
    <li><nobr>系统管理2</nobr>
    <ol>
    <li><nobr><a href="#" tmpHref="logon.jsp" target="detailFrame">登录2</a></nobr>
    </li>
    <li><nobr><a href="#" tmpHref="logout.jsp" target="detailFrame">注销2</a></nobr>
    </li>
    </ol>
    </li>
    <li><nobr>系统管理3</nobr>
    <ol>
    <li><nobr><a href="#" tmpHref="logon.jsp" target="detailFrame">登录3</a></nobr>
    <ol>
    <li><nobr><a href="#" tmpHref="logon.jsp" target="detailFrame">登录3_1</a></nobr>
    </li>
    <li><nobr><a href="#" tmpHref="logon.jsp" target="detailFrame">登录3_2</a></nobr>
    </li>
    </ol>
    </li>
    <li><nobr><a href="#" tmpHref="logout.jsp" target="detailFrame">注销3</a></nobr>
    </li>
    </ol>
    </li>
    </ol></BODY>
    </HTML>
      

  2.   

    -------------------------------
    STYLE:
    a{
    behavior:url(htc/ahref.htc);
    }
    li{
    cursor : default;
    list-style : none;
    behavior:url(htc/list.htc);
    line-height: 20px;
    }
    ol{
    margin-left: 0px;
    margin-top: 0px;
    list-style : none;
    }---------------------------ahref.htc<PUBLIC:ATTACH EVENT="onclick" ONEVENT="jump()"/><SCRIPT LANGUAGE="JavaScript">function jump(){
    if (target=="" || target=="_self"){
    return true;
    }
    openwindowwithoutbar(getAttribute("href"),target);
    event.returnValue = false;
    }</SCRIPT>
    ----------------------------------list.htc<PUBLIC:ATTACH EVENT="onload" ONEVENT="init()" FOR="window"/>
    <PUBLIC:ATTACH EVENT="onselectstart" ONEVENT="cancelEvent()" FOR="document"/>
    <PUBLIC:ATTACH EVENT="onclick" ONEVENT="liClick()"/>
    <PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="overSet()"/>
    <PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="outSet()"/>
    <PUBLIC:PROPERTY NAME="everShow" /><SCRIPT LANGUAGE="JavaScript">
    var extend = false; //初始化是否要展开树型结构function liClick(){
    event.cancelBubble = true;
    if (everShow!=true){
    everShow = true; if (children.length!=0 && children(children.length-1).tagName=="OL"){
    // 为下级设置图片
    for (var j=0;j<children(children.length-1).children.length;j++){
    var tmp = children(children.length-1).children(j);
    var imgHtml = "";
    for (var i=0;i<children(0).getElementsByTagName("IMG").length-1;i++){
    if (children(0).children(i).tagName=="IMG"){
    if (children(0).children(i).src.indexOf("corner.")>0){
    imgHtml += "<img align=\"absbottom\" src=\"./images/vercorner.gif\" width=\"16\" height=\"20\">";
    }else{
    imgHtml += "<img align=\"absbottom\" src=\"./images/ver.gif\" width=\"16\" height=\"20\">";
    }
    }
    }
    tmp.children(0).innerHTML = imgHtml + tmp.children(0).innerHTML;
    }
    }
    } if (children(children.length-1).tagName=="OL"){
    // 展开下级菜单,并进行"+"、"-"号的转换
    var cor = children(0).getElementsByTagName("IMG")(children(0).getElementsByTagName("IMG").length-2).src.indexOf("corner.")>0;
    if (children(children.length-1).style.display == "none"){
    children(children.length-1).style.display = "";
    if (cor){
    children(0).getElementsByTagName("IMG")(children(0).getElementsByTagName("IMG").length-2).src = "./images/subcorner.gif";
    }else{
    children(0).getElementsByTagName("IMG")(children(0).getElementsByTagName("IMG").length-2).src = "./images/sub.gif";
    }
    }else{
    children(children.length-1).style.display = "none";
    if (cor){
    children(0).getElementsByTagName("IMG")(children(0).getElementsByTagName("IMG").length-2).src = "./images/pluscorner.gif";
    }else{
    children(0).getElementsByTagName("IMG")(children(0).getElementsByTagName("IMG").length-2).src = "./images/plus.gif";
    }
    }
    }
    }function init(){
    if (children.length!=0 && children(children.length-1).tagName!="OL"){
    if (parentElement.children(parentElement.children.length-1).uniqueID==uniqueID){
    children(0).innerHTML = "<img align=\"absbottom\" src=\"./images/crosscorner.gif\" width=\"16\" height=\"20\"><img align=\"absbottom\" src=\"./images/apppackage.gif\" width=\"16\">" + children(0).innerHTML;
    }else{
    children(0).innerHTML = "<img align=\"absbottom\" src=\"./images/cross.gif\" width=\"16\" height=\"20\"><img align=\"absbottom\" src=\"./images/apppackage.gif\" width=\"16\">" + children(0).innerHTML;
    }
    }else{
    if (parentElement.children(parentElement.children.length-1).uniqueID==uniqueID){
    children(0).innerHTML = "<img align=\"absbottom\" src=\"./images/pluscorner.gif\" width=\"16\" height=\"20\"><img align=\"absbottom\" src=\"./images/folder.gif\" width=\"16\">" + children(0).innerHTML;
    }else{
    children(0).innerHTML = "<img align=\"absbottom\" src=\"./images/plus.gif\" width=\"16\" height=\"20\"><img align=\"absbottom\" src=\"./images/folder.gif\" width=\"16\">" + children(0).innerHTML;
    }
    children(children.length-1).style.display = "none";
    }
    if (extend){
    // 自动展开树型结构
    if (window.document.body.tmpLiCounter==null){
    window.document.body.tmpLiCounter=1;
    }else{
    window.document.body.tmpLiCounter++;
    }
    if (window.document.body.getElementsByTagName("LI").length==window.document.body.tmpLiCounter){
    for (var i=0;i<window.document.body.getElementsByTagName("LI").length;i++){
    window.document.body.getElementsByTagName("LI")(i).click();
    }
    }
    }
    if (children(0).getElementsByTagName("A").length>0){
    //替换连接中的页面参数(如stId等)
    var link = children(0).getElementsByTagName("A")(0);
    if (link.tmpHref.indexOf("?")>0){
    link.href = link.tmpHref + "&" + (parent.location+"").substring(1+(parent.location+"").indexOf("?"));
    }else{
    link.href = link.tmpHref + "?" + (parent.location+"").substring(1+(parent.location+"").indexOf("?"));
    }
    }
    }function overSet(){
    event.cancelBubble = true;
    children(0).style.backgroundColor = "#D4D0C8";
    }function outSet(){
    event.cancelBubble = true;
    children(0).style.backgroundColor = "";
    }function cancelEvent(){
    event.returnValue = false;
    }
    </SCRIPT>
      

  3.   

    哎呀,看错了,“每次只载入一级”,抱歉抱歉~~~~~~~~~不过,用XML+JSP应该能实现你要的功能。
    我很多方法已经分装到class里了,JSP代码比较短。class用了reflect~~~~~看起来更加晦涩~~~直接发给你不太方便,自己理解吧。