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;
}
}