我采用sqlserver+jsp+javabean,采用xloadtree做了一颗树,sqlserver里建了一张表,字段为id,pid结构,server层递归读取表中数据,并组成xml串,采用servlet得到前面返回的xml串,现在添加没问题了,我想采用jquery,当添加完成后在jquery里对树节点进行刷新(就是把新增的节点刷新出来,并定位在新增的节点上),有谁能帮帮忙吗?不胜感激 

解决方案 »

  1.   

    我刚完成的和你要的差不多,只不过我用的是struts2控制,你可以参考一下我的
    struts.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
      <package name="sysPower" extends="struts-default" namespace="/system/sysPower">
        <action name="findAll" class="com.ruanyu.action.system.SysPowerAction" method="findAllSysPower">
          <result>/page/system/role/addRole.jsp</result>
        </action>
      </package>
      
    </struts>SysPowerAction.java
    package com.ruanyu.action.system;import java.util.List;
    import java.util.Map;import javax.annotation.Resource;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.ServletResponseAware;
    import org.apache.struts2.interceptor.SessionAware;
    import org.apache.struts2.util.ServletContextAware;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;
    import com.ruanyu.beans.system.SysPower;
    import com.ruanyu.service.system.SysPowerService;@Controller
    @Scope("prototype")
    public class SysPowerAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware, ServletContextAware{

    @Resource(name="sysPowerServiceImpl")
    private SysPowerService sysPowerService;

    private List<SysPower> list;

    private SysPower power;

    private HttpServletRequest request;
    private Map session;
    private ServletContext application;
    private HttpServletResponse response; public SysPower getPower() {
    return power;
    } public void setPower(SysPower power) {
    this.power = power;
    } public String findAllSysPower() throws Exception {
    String xmlString=this.sysPowerService.getXML();
    request.setAttribute("xmlString", xmlString);
    return SUCCESS;
    } public List<SysPower> getList() {
    return list;
    } public void setList(List<SysPower> list) {
    this.list = list;
    } public void setServletRequest(HttpServletRequest request) {
    this.request=request;
    } public void setSession(Map session) {
    this.session=session;
    } public void setServletContext(ServletContext application) {
    this.application=application;
    } public void setServletResponse(HttpServletResponse response) {

    this.response=response;
    }
    }
    PowerServiceImpl.java
    package com.ruanyu.service.system.impl;import java.util.List;import javax.annotation.Resource;import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.tree.DefaultElement;
    import org.springframework.stereotype.Service;import com.ruanyu.beans.system.SysPower;
    import com.ruanyu.dao.system.SysPowerDao;
    import com.ruanyu.service.system.SysPowerService;@Service
    public class SysPowerServiceImpl implements SysPowerService{

    @Resource(name="sysPowerDaoImpl")
    private SysPowerDao sysPowerDao;

    public List<SysPower> findAllSysPower() {
    return this.sysPowerDao.findAllPower();
    } public SysPower findById(Integer id) {
    return this.sysPowerDao.findById(id);
    } public String getXML() {
    Document document = DocumentHelper.createDocument();   
    Element root = document.addElement("tree");   
    root.addAttribute("id", "0");

    List<SysPower> list=this.findAllSysPower();
    if (null != list && !list.isEmpty()) { for (SysPower power : list) {
    if(power.getParentid()==0)
    {
    buildParent(root, power);
    }

    }
    }
    return document.asXML();
    // StringBuffer sb=new StringBuffer();
    // sb.append("<?xml version=\"1.0\" encoding=\"utf-8\">");
    // List<SysPower> list=this.findAllSysPower();
    // sb.append("<tree id=0>");
    // Document document = DocumentHelper.createDocument();
    // Ele
    // for(SysPower power:list){
    // sb.append("<item id="+power.getId()+" parentId="+power.getParentid()+" text="+power.getText()+"/>");
    // }
    // sb.append("</tree>");
    // return sb.toString();
    }

    private void buildParent(Element element,SysPower power){
    //System.out.println("parent...");
    Element child =null;

    child = element.addElement("item");
    child.addAttribute("id", power.getId().toString());
    child.addAttribute("text", power.getText());
    buildElements(child, power);
    } private void buildElements(Element element, SysPower power) {
    //System.out.println("childers...");
    List<SysPower> children = this.findChildPower(power.getId());
    if(null != children && !children.isEmpty()) {
    for(SysPower parent : children) {
    Element child =null;
    child = element.addElement("item");
    child.addAttribute("id", parent.getId().toString());
    child.addAttribute("text", parent.getText());
    buildElements(child, parent);
    }
    }

    } public List<SysPower> findChildPower(Integer parentid) {
    return this.sysPowerDao.findChildPower(parentid);
    }}
    addRole.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%
    String path = request.getContextPath();
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title></title>
        
        <link rel="stylesheet" type="text/css" href="<%=path %>/file/dhtmlxTree/codebase/dhtmlxtree.css" />
        <script type="text/javascript" src="<%=path %>/file/dhtmlxTree/codebase/dhtmlxcommon.js"></script>
        <script type="text/javascript" src="<%=path %>/file/dhtmlxTree/codebase/dhtmlxtree.js"></script>
        <script type="text/javascript" src="<%=path %>/file/dhtmlxTree/codebase/ext/dhtmlxtree_json.js"></script>
        <script type="text/javascript" src="<%=path %>/jslib/jquery.js"></script>
        
        
        <link type="text/css" rel="stylesheet" href="<%=path %>/css/add.css" />
        <script type="text/javascript" src="<%=path %>/file/FCKeditor/fckeditor.js"></script>
        <script type="text/javascript">
         String.prototype._dhx_trim = function(){
             return this.replace(/&nbsp;/g," ").replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"");
         }     window.onload=function(){ 
       var oFCKeditor = new FCKeditor('content') ;
           oFCKeditor.BasePath ="<%=path%>/file/FCKeditor/";
           oFCKeditor.ToolbarSet="myConfig";
       oFCKeditor.Height="150px";
       oFCKeditor.Width="400px"
           oFCKeditor.ReplaceTextarea();
         }
        function return_page(){
       history.back();
        }
      </script>
      </head>
      
      <body>
      <div id="xmlString" style="display:none;">
         <s:property value="#request.xmlString"/>
      </div>
       <form action="#" method="post" enctype="multipart/form-data">
       <table border="0" cellpadding="0" cellspacing="0" width="730" style="font-size:15px">
          <tr>
            <td align="right" bgcolor="#FFFFFF">角色名称:</td>
            <td><input type="text" />*</td>
          </tr>
          <tr>
            <td align="right" bgcolor="#FFFFFF">角色文档大小:</td>
            <td><input type="text"/>*</td> 
          </tr>
          <tr>
            <td align="right" bgcolor="#FFFFFF">角色类型:</td>
            <td>
              <select>
                <option>--请选择--</option>
                <option>管理员</option>
                <option>教师</option>
                <option>学生</option>
                <option>助理系统管理员</option>
                <option>助理课程管理员</option>
              </select>
            </td>
          </tr>
          <tr>
             <td align="right" bgcolor="#FFFFFF">角色简介:</td>
             <td class="nr">
               <textarea name="content"></textarea>
             </td>
          </tr>
          <tr>
             <td align="right" bgcolor="#FFFFFF">选择权限:</td>
             <td>
               <div id="treeBox" style="width:400px; height:230px;"></div>
               <script>
               $(function() {
               
                var tree=new dhtmlXTreeObject("treeBox","100%","100%",0);
                  tree.setImagePath("<%=path %>/file/dhtmlxTree/codebase/imgs/csh_yellowbooks/");
                  tree.setSkin("dhx_skyblue");
                  tree.enableDragAndDrop(false); 
                  <%-- 加复选框 1: 表示带 否则不带 --%>
                  tree.enableCheckBoxes(1);
                  <%-- 是否级联选择 true : 级联选择 false: 不级联选择 --%> 
                  tree.enableThreeStateCheckboxes(true);
                  tree.enableFixedMode(0);
                  tree.enableTreeLines(true);
                  var xmlString=document.getElementById("xmlString");
                  tree.loadXMLString(xmlString.innerText);
                  tree.openAllItems(0);
               });
               </script>
             </td>
          </tr>
          <tr>
            <td colspan="2" align="center">
              <input type="submit" class="h29" value="添加" />&nbsp;&nbsp;&nbsp;&nbsp;
             <input type="button" class="h29" value="返回" onclick="return_page();"/></td>
          </tr>
       </table>
    </form>
      </body>
    </html>