运用ajax技术的树型菜单

    技术2022-05-11  102

    原文地址:http://www.blogjava.net/rickhunter/articles/59742.html

    1、jsp页面

    <% @ page language = " java "  contentType = " text/html; charset=GB2312 "   import = " java.util.*,com.wehave.oa.cecontract.model.TbJyhtflb " %> < html > < head > < title > Insert title here </ title > < link rel = " stylesheet "  href  =   " ../css/tree.css " >   < script type = " text/javascript "  src = " ../js/tree_htfl.js " ></ script > < script languge = " javascript " >     function ShowDetail(ID,NAME,FLAG) {        window.parent.right.location ="getContract.go?method=doGetContract&folderID=" +ID + "&&folderName="+NAME+"&&flag="+FLAG;    } </ script > </ head > < body bgcolor = " #F6F9FF " > < tbody > < table cellpadding = " 0 "  cellspacing = " 0 "  width = " 300 "   >   < div id = " load "  style = " display:none " >   < img src = " ../images/tree_loading.gif " > Loading data.. </ div > < ul  class = " tree " > <%   List treeList  =  (List)request.getAttribute( " treefolder " );    Iterator it = treeList.iterator();     while (it.hasNext()) {        out.println(it.next().toString());    } %> </ table > </ tbody > </ body > </ html > 2、tree_htfl.js 代码 function showHide( id ) {  var el= document.getElementById( id );  var bExpand = true;  var images = el.getElementsByTagName("IMG");  if (images[0].src.indexOf("tree_minus.gif")!=-1)  {    bExpand = false;    images[0].src="../images/tree_plus.gif";  }else{    images[0].src="../images/tree_minus.gif";  }  var subs=el.lastChild;  if(bExpand)    subs.style.display="block";  else    subs.style.display="none";} function getSubTree( id ,submitURL) {  var submitURL=submitURL  postXmlHttp( submitURL, 'parseSubTree("'+id+'")' ,'load("'+id+'")');} function parseSubTree(id) {  var el= document.getElementById( id );  var ulElmt= document.createElement("UL");  ulElmt.innerHTML=_xmlHttpRequestObj.responseText;  el.appendChild(ulElmt);  var images = el.getElementsByTagName("IMG");  images[0].setAttribute("src""../images/tree_minus.gif");  images[0].setAttribute("onclick"new Function("showHide('"+id+"')"));  var aTag = el.getElementsByTagName("A");  aTag[0].setAttribute("onclick"new Function("showHide('"+id+"')"));  var loadDiv= document.getElementById( "load" );  loadDiv.style.display="none";} function load(id) { var loadDiv= document.getElementById( "load" ); loadDiv.style.display="block";} var _postXmlHttpProcessPostChangeCallBack;var _xmlHttpRequestObj;var _loadingFunction;function postXmlHttp( submitUrl, callbackFunc ,loadFunc) {  _postXmlHttpProcessPostChangeCallBack = callbackFunc;  _loadingFunction = loadFunc;  if(window.createRequest)  {    try{      _xmlHttpRequestObj=window.createRequest();      _xmlHttpRequestObj.open('POST',submitUrl,true);      _xmlHttpRequestObj.onreadystatechange=postXmlHttpProcessPostChange;      _xmlHttpRequestObj.send();    }    catch(ee){}  }  else if(window.XMLHttpRequest)  {    _xmlHttpRequestObj=new XMLHttpRequest();    _xmlHttpRequestObj.overrideMimeType('text/xml');    _xmlHttpRequestObj.open('POST',submitUrl,true);    _xmlHttpRequestObj.onreadystatechange=postXmlHttpProcessPostChange;    _xmlHttpRequestObj.send("");  }  else if(window.ActiveXObject)  {    _xmlHttpRequestObj=new ActiveXObject("Microsoft.XMLHTTP");    _xmlHttpRequestObj.open('POST',submitUrl,true);    _xmlHttpRequestObj.onreadystatechange=postXmlHttpProcessPostChange;    _xmlHttpRequestObj.send();  }} ;function postXmlHttpProcessPostChange( ) {  if( _xmlHttpRequestObj.readyState==4)  {      if(_xmlHttpRequestObj.status==200){        setTimeout( _postXmlHttpProcessPostChangeCallBack, 2 );    }else{        alert(_xmlHttpRequestObj.status);    }  }  if ( _xmlHttpRequestObj.readyState==1 )  {    setTimeout( _loadingFunction, 2 );  }}

    3、action代码

    /**     * 展开第一层目录     */      public  ActionForward doGetFolderList(            ActionMapping mapping,            ActionForm form,            HttpServletRequest req,            HttpServletResponse res) {        List list = treeCatalogService.getChildren("0");        List TreeFolder=new ArrayList();        Iterator it=list.iterator();        while(it.hasNext()){            TbJyhtflb htfl=(TbJyhtflb)it.next();            String s=treeCatalogService.renderTreeViewAjax(htfl);            TreeFolder.add(s);        }        req.setAttribute("treefolder",TreeFolder);        return mapping.findForward("foldertree");    }          /**     * 展开下级目录     */      public  ActionForward doGetSubFolderList(            ActionMapping mapping,            ActionForm form,            HttpServletRequest req,            HttpServletResponse res) {        String parentID = req.getParameter("parentID"); //获得id的值        if (parentID!=null&&!parentID.equals(""))//如果不为null和空            res.setContentType("text/html;charset=GB2312");            List list = treeCatalogService.getChildren(parentID);            Iterator it=list.iterator();            try {                PrintWriter out= res.getWriter();                while(it.hasNext()){                    TbJyhtflb htfl=(TbJyhtflb)it.next();                    out.println(treeCatalogService.renderTreeViewAjax(htfl));                }                out.close();            }catch(Exception e){                e.printStackTrace();            }        }        return null;    } 4、service层代码 /**     * 函数说明:展开目录     * 参数说明: 目录对象     * 返回值:展开目录的HTML代码     */      public  String renderTreeViewAjax(TbJyhtflb htfl)  {        StringBuffer content = new StringBuffer();        String ID=htfl.getTbJyhtflbZlId();        String NAME=htfl.getTbJyhtflbMc();        String FLAG=htfl.getTbJyhtflbLb();        content.append("<li id='"+ID+"'>");        if (treeCatalogDAO.canExpand(ID))            content.append("<img src=../images/tree_plus.gif onClick=/"getSubTree('"+ID+"')/">");        else            content.append("<img src=../images/tree_blank.gif>");        content.append("<img src=../images/tree_folder.gif><a href=/"javascript:ShowDetail('"+ID+"','"+NAME+"','"+FLAG+"')/"");        if (treeCatalogDAO.canExpand(ID)){            String submitURL="getFolderList.go?method=doGetSubFolderList&parentID="+ID;            content.append(" onClick=/"getSubTree('"+ID+"',submitURL)/"");        }        content.append(">"+NAME+"</a>");                content.append("</li>");        return content.toString();    } 5、tree.css代码:     p {        font-family:arial;            }     a {        color:#000;        font-family:arial;        font-size:0.8em;    }         .tree {        margin:0px;        padding:0px;    }     .tree ul {    /*子结点*/        margin-left:20px;    /* Left spacing */        padding-left:0px;    }     .tree li {    /* 结点 */         list-style-type:none;        vertical-align:middle;            }     .tree li a {    /* 结点连接 */        color:#000;        text-decoration:none;        font-family:arial;        font-size:0.8em;        padding-left:2px;    }  

    最新回复(0)