function createTreeMenu(){//创建一个树的面板
var treeMenu = new Ext.tree.TreePanel({
lines : true,
minSize : 150,
border : false,
root : new Ext.tree.AsyncTreeNode({text : 'root'}),
loader : new Ext.tree.TreeLoader({dataUrl:'/extDemo/getData?action=treeMenu'})
});
var win = new Ext.Window({
width : 600,
height : 400,
items : [treeMenu]
});
treeMenu.expandAll();
win.show();
}
loader中的dataurl对应servlet中调用一个生成Json的方法如下:
private String getTreeMenu(){
List<Menu> list = new ArrayList<Menu>();
for (int i = 0; i < 3; i++){
Menu menu = new Menu();
menu.setUrl(null);
menu.setId("id_" + i);
menu.setText("菜单" + i);
menu.setLeaf(false);
for (int j = 0; j < 3; j++){
Menu subMenu = new Menu();
subMenu.setUrl("/extDemo/getData");
subMenu.setId(i + "" + j);
subMenu.setText("子菜单" + j);
subMenu.setLeaf(true);
menu.appendChild(subMenu);
}
list.add(menu);
}
return JSONArray.fromObject(list).toString();
}
getTreeMenu中的Menu代码如下:
public class Menu {
//以下字段的名字一定要是这样,因为它们要跟ext中的treeNode的属性对应.
private String id;
private String text;
private String url;
private boolean leaf;
private List<Menu> children = new ArrayList<Menu>();
public void appendChild(Menu subMenu){
this.children.add(subMenu);
}
/**还有很多get和set方法
*/
}