ExtJS4 TreePanel 加载数据J2EE
ExtJS4 树形加载测试:
1. 客户端JS 代码
Ext.require([
'Ext.tree.*',
'Ext.data.*'
]);
Ext.onReady(function() {
var treeStore = Ext.create('Ext.data.TreeStore', {
autoLoad : true,
fields : ['id', 'text', 'cls', 'leaf', 'link', 'children'],
proxy : { type : 'ajax',
url : 'tree.do',
reader: {
type : 'json'
}
},
root : {
id : '0',
text : 'China',
expanded : true
}
}
);
var tree = Ext.create('Ext.tree.Panel', {
renderTo : Ext.getBody(),
title : 'TreeNav',
height: 350,
width: 400,
hideHeaders: true,
rootVisible: true,
viewConfig: {
plugins: [{
ptype: 'treeviewdragdrop'
}]
},
collapsible: true,
singleExpand: true,
useArrows: true,
store : treeStore,
listeners: {
itemclick : function(view, record, item, index, e)
{
var leaf = record.get('leaf');
if(leaf)
{
window.open(record.get('link'), '_blank');
}
else
{
var expanded = record.get('expanded');
if(expanded)
{
view.collapse(record);
}
else
{
view.expand(record);
}
}
}
}
});
});
2. 服务端Java实现
public static List<TreeBean> getChildren(String parentId)
{
List<TreeBean> list = new ArrayList<TreeBean>();
if(parentId.equals("0"))
{
TreeBean bean = new TreeBean();
bean.setId(1);
bean.setText("北京");
bean.setCls("file");
bean.setLeaf(false);
bean.setLink("www.google.com");
bean.setChildren(getRegions());
list.add(bean);
bean = new TreeBean();
bean.setId(2);
bean.setText("天津");
bean.setCls("file");
bean.setLeaf(false);
bean.setLink("www.baidu.com");
list.add(bean);
}
return list;
}
public static List<TreeBean> getRegions()
{
List<TreeBean> list = new ArrayList<TreeBean>();
TreeBean bean = new TreeBean(18, "东城区", "file", "http://www.google.com", true);
list.add(bean);
bean = new TreeBean(19, "西城区", "file", "http://www.google.com", true);
list.add(bean);
return list;
}
// TODO Auto-generated method stub
String parentId = request.getParameter("id");
//String text = request.getParameter("text");
List<TreeBean> list = TreeNav.getChildren(parentId);
/*Tree tree = new Tree();
tree.setParentId(parentId);
tree.setChildren(list);*/
JSONArray arr = JSONArray.fromObject(list);
response.setCharacterEncoding("utf-8");
response.getWriter().println(arr.toString());
3.返回数据格式
[{"children":[{"children":[],"cls":"file","id":18,"leaf":true,"link":"http://www.google.com","text":"东城区"},{"children":[],"cls":"file","id":19,"leaf":true,"link":"http://www.google.com","text":"西城区"}],"cls":"file","id":1,"leaf":false,"link":"www.google.com","text":"北京"},{"children":[],"cls":"file","id":2,"leaf":false,"link":"www.baidu.com","text":"天津"}]
4. UI