最近在做一棵树,参照xloadtree目前树已经出来了,但是不知道为何所有节点总是自动加载,并不是象预期设计的那样点一个节点才把下属节点显示出来,而是加载所有,找了半天摸不到头脑。工程采用springside开源框架。代码结构大概如下: 
VIEW   demo.jsp 
<%@   page   contentType="text/html;charset=UTF-8"   %> 
<%@   include   file="/common/taglibs.jsp"   %> 
<html> 
<head> 
<title> XTree   2   Demo </title> 
<meta   http-equiv="Content-Type"   content="text/xml;   charset=utf-8"> 
<link   type="text/css"   rel="stylesheet"   href="css/xtree2.links.css"> 
<script   type="text/javascript"   src=" <c:url   value='/stage/xtree2b/js/xtree2.js'/> "> </script> 
<script   type="text/javascript"   src=" <c:url   value='/stage/xtree2b/js/xmlextras.js'/> "> </script> 
<script   type="text/javascript"   src=" <c:url   value='/stage/xtree2b/js/xloadtree2.js'/> "> </script> 
</head> 
<body> 
<script   type="text/javascript"> 
var   tree   =   new   WebFXLoadTree("中国移动",   " <c:url   value='/stage/getTreeXML.do?method=getTree&id=1'/> "); 
tree.write(); 
</script> 
</body> 
</html> 
生成XML 
package   com.cosnetbj.as.commons.web.support; import   java.io.PrintWriter; 
import   java.util.ArrayList; import   javax.servlet.http.HttpServletRequest; 
import   javax.servlet.http.HttpServletResponse; 
import   javax.xml.parsers.*; import   org.jdom.Document; 
import   org.jdom.Element; 
import   org.jdom.output.Format; 
import   org.jdom.output.XMLOutputter; 
import   org.springside.core.commons.BaseManageController; 
import   com.cosnetbj.as.plugins.security.domain.User; 
import   com.cosnetbj.as.supplierCenter.domain.ProductCategory; 
import   com.cosnetbj.as.supplierCenter.service.ProductCategoryManager; public   class   GetTreeXMLController   extends   BaseManageController{ 
private   ProductCategoryManager   productCategoryManager; public   void   getTree(HttpServletRequest   request, 
HttpServletResponse   response)   throws   Exception   { 
response.setContentType("text/xml;   charset=utf-8"); 
    response.setHeader("Cache-Control",   "no-cache"); 
    response.setDateHeader("Expires",   0); 
    PrintWriter   out   =   response.getWriter(); //NEW   一个   XML   对象 
Document   doc   =   new   Document(new   Element("tree")); String   orgId   =   ""; 
if(request.getParameter("id")   !=   null){ 
orgId   =   request.getParameter("id"); 
ArrayList   productCategoryList   =   (ArrayList)productCategoryManager.findByParentId(Integer.parseInt(orgId)); 
for(int   i   =   0;i   <   productCategoryList.size();   i   ++){ 
ProductCategory   productCategory   =   (ProductCategory)productCategoryList.get(i); 
  Element   tree   =   doc.getRootElement(); 
  Element   inner   =   new   Element("tree").setAttribute("text",productCategory.getName()); 
  tree.addContent(inner); 
if(productCategoryManager.ifParentCategory(productCategory.getId())){ //判断该节点下是否有别的子节点
  inner.setAttribute("src",   "/cmeppew/stage/getTreeXML.do?method=getTree&id="+productCategory.getId()); 
  inner.setAttribute("expanded","false"); 

else{ 
System.out.println("bb"); 
inner.setAttribute("action","javascript:alert('aa')"); 

}     Format   format   =   Format.getCompactFormat(); 
    format.setEncoding("utf-8"); 
    format.setIndent("\t"); 
    XMLOutputter   xout   =   new   XMLOutputter(format); 
    xout.output(doc,   out); 
    out.flush(); 
    out.close(); } 

} 有知道的请告诉我    谢谢大家了 如果有合适的DEMO是否可以发我邮箱一下:[email protected](官网的DEMO别发了我参照那个做的)

解决方案 »

  1.   

    虽然官方的demo 很好 但是有些东西都是大相径庭的..我用过xloadtree 但是 把官方的 给改了 ..---------------------------------------- //树的展现
    public ActionForward getTree(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) 
    {
    String Psql="select distinct a.districtPid from BasDistrict a where a.delFlag=0";
    List PidList = basDistrictManager.find(Psql);


    StringBuffer sql = new StringBuffer();
    sql.append("select new com.oppo.member.baseinfo.dto.TreeDTO(a.districtId,a.districtName,a.districtPid)");
    sql.append(" from BasDistrict a where a.delFlag=0 and a.districtPid=1");
    List list = basDistrictManager.find(sql.toString());
    for(int i=0;i<list.size();i++)
    {
    TreeDTO one = (TreeDTO)list.get(i);
    if(PidList.contains(one.getId()))
    {
    one.setHasChild("1");
    }else{
    one.setHasChild("0");
    }
    }
    request.setAttribute("dataList",list);

    return mapping.findForward("tree");
    }
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import ="java.sql.*" %>
    <%@ page import ="com.oppo.member.common.service.CommonManager" %>
    <html>
    <head>
    <title>国家地区树</title>
    <meta Http-equiv="Content-Type" Content="text/html; charset=UTF-8" />
    <script Type="text/javascript" Src="../js/xtree.js"></script>
    <script Type="text/javascript" Src="../js/xmlextras.js"></script>
    <script Type="text/javascript" Src="../js/xloadtree.js"></script>
    <link Type="text/css" Rel="STYLESHEET" Href="../css/xtree.css" />
    </head>
    <body Class='panelclass' leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
    <script>
    function toURL(Subjid){
    parent.window.frames["MainFrame"].location.href = "../baseinfo/basDistrict.do?method=getList&districtPid=" + Subjid;
    }
    </script>
    <script Type="text/javascript">
        /// XP Look
        webFXTreeConfig.rootIcon                = "../images/xp/folder.png";
        webFXTreeConfig.openRootIcon            = "../images/xp/openfolder.png";
        webFXTreeConfig.folderIcon              = "../images/xp/folder.png";
        webFXTreeConfig.openFolderIcon          = "../images/xp/openfolder.png";
        webFXTreeConfig.fileIcon                = "../images/xp/file.png";
        webFXTreeConfig.lMinusIcon              = "../images/xp/Lminus.png";
        webFXTreeConfig.lPlusIcon               = "../images/xp/Lplus.png";
        webFXTreeConfig.tMinusIcon              = "../images/xp/Tminus.png";
        webFXTreeConfig.tPlusIcon               = "../images/xp/Tplus.png";
        webFXTreeConfig.iIcon                   = "../images/xp/I.png";
        webFXTreeConfig.lIcon                   = "../images/xp/L.png";
        webFXTreeConfig.tIcon                   = "../images/xp/T.png";
        webFXTreeConfig.blankIcon               = "../images/xp/blank.png";    <%
        oracle.jdbc.pool.OracleDataSource dataSource = null;
        Connection conn=null;
        PreparedStatement pstmt =null;
        PreparedStatement pstmt2 =null;
        ResultSet rset=null;
        ResultSet rset2=null;    
        String SubjId=null;
        String SubjName=null;
        StringBuffer sbf=new StringBuffer();    try {
            dataSource=(oracle.jdbc.pool.OracleDataSource)com.oppo.member.common.AppUtil.getBean("jdbcCon");
            conn= dataSource.getConnection();
            String queryStr="select DISTRICT_PID,DISTRICT_ID,DISTRICT_NAME from bas_DISTRICT where DISTRICT_PID = '0' and del_Flag != '1' ";        pstmt = conn.prepareStatement(queryStr);
            //查询结果
            rset = pstmt.executeQuery(queryStr);
            if (rset.next())
            {
                SubjId=rset.getString("district_id");
                SubjName = new String(rset.getString("district_name").getBytes("iso8859-1"));
                sbf.append("var tree = new WebFXTree(\""+SubjName+"\",\"javascript:toURL('"+SubjId+"')\");\n");
                queryStr="select district_pid,district_id,district_name from bas_district where del_Flag != '1' and district_pid='"+SubjId+"' ";
                rset = pstmt.executeQuery(queryStr);
                while (rset.next())
                {
                    SubjId=rset.getString("district_id");
                    SubjName = new String(rset.getString("district_name").getBytes("iso8859-1"));
                    queryStr="select count(*) a from bas_district where del_Flag != '1' and district_pid = '"+SubjId+"'";
                    pstmt2= conn.prepareStatement(queryStr);
                    rset2 = pstmt2.executeQuery(queryStr);
                  
                    rset2.next();
                    if (rset2.getInt(1)>0)
                    {
                        sbf.append("tree.add(new WebFXLoadTreeItem(\""+SubjName+"\", \""+request.getContextPath()+"/DistrictTree.xml?districtId="+SubjId+"\",\"javascript:toURL('"+SubjId+"')\"));\n");
                    } else
                    {
                        sbf.append("tree.add(new WebFXTreeItem(\""+SubjName+"\",\"javascript:toURL('"+SubjId+"')\"));\n");
                    }
                    rset2.close();
                    pstmt2.close();
                }
                sbf.append("document.write(tree);\n");
            }
        }
        catch (Exception ex) {
         ex.printStackTrace();
            out.print("错误的树");
        }finally{
            try {
                rset.close();
                pstmt.close();
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        out.print(sbf.toString());
        %>
    </script>
    </body>
    </html>