Extjs 动态加载树

Ext js 和struts2 的结合,请 先 取出struts2中的无用jar:json-lib-2.1

 

struts2 本身待的json包已经很老了,提供的工具方法就不全,本demo 中 已经 附带了json 的新jar

 

本例子中不包含struts2的jar包。如果想跑起来,请自行加上struts2的jar

 

JS代码:


Ext.onReady(function(){
    var Tree = Ext.tree;
  
    var tree = new Tree.TreePanel({
        autoScroll:true,
        animate:true,
        enableDD:true,
        containerScroll: true,
        loader: new Tree.TreeLoader({
            dataUrl:'http://localhost/Ext/tree.action'
        })
    });

    // set the root node
    var root = new Tree.AsyncTreeNode({
        text: 'Car',
        draggable:false,
        id:'source'
    });
    tree.setRootNode(root);

    // render the tree
    tree.render('div');
    root.expand();
});

 

 

 

JAVA代码:

 

 

action:

--------------------------------------

package com;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;


import net.sf.json.JSONArray;

import org.apache.struts2.ServletActionContext;

import bean.Menu;

import com.opensymphony.xwork2.ActionSupport;

public class TreeAction extends ActionSupport {

    private String menuString;
    private List<Menu> menus;

    public String execute() {

        menus = new ArrayList<Menu>();

        Menu benz = new Menu();
       
        benz.setText("Benz");
        benz.setCls("folder");
        benz.setLeaf(false);
        benz.setId(10);
       
        menus.add(benz);

        List<Menu> benzList = new ArrayList<Menu>();
        benz.setChildren(benzList);

        Menu menu  = new Menu();
        menu.setText("S600");
        menu.setCls("file");
        menu.setLeaf(true);
        menu.setId(11);
        benzList.add(menu);
       
        menu = new Menu();
        menu.setText("SLK200");
        menu.setCls("file");
        menu.setLeaf(true);
        menu.setId(12);
        benzList.add(menu);

        Menu bmw = new Menu();
        bmw.setText("BMW");
        bmw.setCls("folder");
        bmw.setLeaf(false);
        bmw.setId(20);
        menus.add(bmw);

        List<Menu> bmwList = new ArrayList<Menu>();
        bmw.setChildren(bmwList);

        menu = new Menu();
        menu.setText("325i");
        menu.setCls("file");
        menu.setLeaf(true);
        menu.setId(21);
        bmwList.add(menu);

        menu = new Menu();
        menu.setText("X5");
        menu.setCls("file");
        menu.setLeaf(true);
        menu.setId(22);
        bmwList.add(menu);
       
        JSONArray jsonObject = JSONArray.fromObject(menus);
       
        response(jsonObject);
        return null;
    }
    //向前台传送json结果集
    protected void response(Object message) {
        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            PrintWriter out = response.getWriter();
            out.print(message);
            out.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
   
   
    public String getMenuString() {
        return menuString;
    }

    public void setMenuString(String menuString) {
        this.menuString = menuString;
    }

}

--------------------------------------

bean:

 

package bean;

import java.util.List;

public class Menu {

    private int id;
    private String text;
    private boolean leaf;
    private String cls;
    private List<Menu> children;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public boolean isLeaf() {
        return leaf;
    }

    public void setLeaf(boolean leaf) {
        this.leaf = leaf;
    }

    public String getCls() {
        return cls;
    }

    public void setCls(String cls) {
        this.cls = cls;
    }

    public List<Menu> getChildren() {
        return children;
    }

    public void setChildren(List<Menu> children) {
        this.children = children;
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值