相关技术struts2 + ajax + json + zTree,帮我写action和ajax,谢谢!
其中zTree的数据,
var zNodes =[
{ id:1, pId:0, name:"公司行政本部",open:true},
{ id:11, pId:1, name:"公司高管 ", open:false},
{ id:111, pId:11, name:"叶子节点", open:false},
]...
在action中通过json传到页面。AjaxJSONzTree

解决方案 »

  1.   

    把全部部门转为JSON,然后设置zTree的simpleData,设置好ID和pid对应的KEY自动就出来了
      

  2.   

    很简单,只要你数据库设计好了,ID,PID, 等对应, 取出来,在转一下, 就ok建议看ztree 开源的东西,
      

  3.   

    这个应该好写吧,关键之处是生成那个json数据,照样拼起来就行了吧
      

  4.   

    { id:111, pId:11, name:"叶子节点", open:false},
    定义一个树的对象:有id,pId,name,open的属性,
    然后根据你从数据库查出的数据来填充这个树对象
    估计会用到递归
    open属性不写的话,树都是展开的。你可以根据是不是下面有子树来判断是否false
      

  5.   

    谢谢各位,我也知道怎么实现,只是最近太忙了没时间。
    我的E-mail:[email protected].
      

  6.   

    为什么不做成淘宝的那种树的效果呢,从使用者的角度来说淘宝的哪种树结构更人性化
    http://zhidao.baidu.com/question/554876613?quesup2&oldq=1
      

  7.   

    这个东西不用自己动用去写吧,有很多dtree的组件拿来就可以用的,用得着自己去写吗
      

  8.   

    看来还是得靠自己,这里把我的代码贴出来。
    Action代码:
    // 生成部门树
    public void generateOrganizationTree() throws IOException {
    String id = this.getRequest().getParameter("id");
    organization = organizationService.getOrganization(id);
    List<OrganizationStructure> organizationlist = new ArrayList<OrganizationStructure>();
    List<OrganizationStructure> organizations = recursiveOrganization(id,
    null, organizationlist);
    String jsonString = "";
    if (organizations != null) {
    jsonString = formatOrganizationJson(organizations);

    String json = jsonString.replace("\"", "'");
    this.setResult("{\"IsSuccess\":true,\"jsonNodes\":\"" + json + "\"}");
    // System.out.println("result:" + this.getResult());
    this.getResponse().setContentType("application/json; charset=utf-8");
    PrintWriter pw = this.getResponse().getWriter();
    pw.print(this.getResult());
    }// 使用递归查询栏目
    public List<OrganizationStructure> recursiveOrganization(String id,
    String type, List<OrganizationStructure> organizationlist) {
    List<OrganizationStructure> organizations = organizationService
    .getOrganizations(id, type);
    for (OrganizationStructure os : organizations) {
    organizationlist.add(os);
    recursiveOrganization(os.getId(), type, organizationlist);
    }
    return organizationlist;
    }//部门list转换为JSONArray
    private String formatOrganizationJson(
    List<OrganizationStructure> organizationlist) {
    JSONArray josnArray = new JSONArray();
    for (OrganizationStructure os : organizationlist) {
    String pId = null;
    String iconUrl = null;
    boolean drag = false;
    if (os.getParent() == null) {
    pId = "0";
    iconUrl = "/images/1_close.png";
    drag = false;

    } else {
    pId = os.getParent().getId();
    drag = true;
    }
    JSONObject node = new JSONObject();
    node.put("id", os.getId());
    node.put("pId", pId);
    node.put("name", os.getChName());
    node.put("icon", iconUrl);
    josnArray.add(node);
    }
    return josnArray.toString();
    }
      

  9.   

    jsp页面部分代码:
    <div id="treeDemo" class="ztree"></div>
    <script language="javascript">
    var zTreeObj;
    var setting = {
    async: {
    enable: true,
    dataType: "json",
    dataFilter:ajaxDataFilter,
    url: "/structureTree/generateOrganizationTree.do",
    autoParam: ["id"]
    },
    check:{
    enable: false,
    chkStyle: "checkbox"
    },
    edit: {
    drag: {
    autoExpandTrigger: true,
    isCopy: false,
    isMove: true,
    prev: dropPrev,
    inner: false,
    next: dropNext,
    minMoveSize: 10
    },
    enable: true,
    showRemoveBtn: false,
    showRenameBtn: false
    },
    view: {
    nameIsHTML: true,
    showIcon: true,
    showLine: true,
    dblClickExpand:false },
    data: {
    keep: {
    parent: true
    },
    simpleData: {
    enable: true,
    idKey : "id",
    pIdKey : "pId",
    rootPId : null
    }
    },
    callback: {
    beforeDrag: beforeDrag,
    beforeDrop: beforeDrop,
    beforeDragOpen: beforeDragOpen,
    onDrag: onDrag,
    onDrop: onDrop,
    onExpand: null,
    onAsyncSuccess: null,
    onClick: null,
    onDblClick: null
    }
    };function ajaxDataFilter(treeId, parentNode, responseData) {
    if (responseData!=null&&responseData.IsSuccess) {
    responseData = eval(responseData.jsonNodes);
    }
    return responseData;
    }$(document).ready(function(){
    $.ajax({
    url : "/structureTree/generateOrganizationTree.do",
    data : {id:"0"},
    type : "GET",
    dataType : "json",
    success : function(data){
    if(data.IsSuccess){
    var zNodes = eval('(' + data.jsonNodes + ')');
    zTreeObj=$.fn.zTree.init($('#treeDemo'),setting,zNodes);
    }else{
    alert("发生错误。");
    }
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
    //alert(XMLHttpRequest.status);
    //alert(XMLHttpRequest.readyState);
    //alert(textStatus);
    }
    });
    });具体要实现对树的哪些操作,可以查看zTree的API文档(http://www.ztree.me/v3/api.php)。