使用ext4生成动态树,后台的action怎么写?前台代码: Ext.define('knowlTreeModel',{
extend: 'Ext.data.Model',
fields: [{
name: 'id', type: 'string'
},{
name: 'text', type: 'string'
}]
});
var knowlTreeStore = Ext.create('Ext.data.TreeStore',{
model: 'knowlTreeModel',
proxy: {
type: 'ajax',
url: 'knowlPoint.do?method=trunkTree'
},
reader: {
type: 'json'
},
root: {
id: 'rootNode',
text: '根节点',
expanded: false
}
});
var knowlTreePanel = Ext.create('Ext.tree.Panel',{
width: 300,
height: 450,
store: knowlTreeStore,
rootVisible: true,
renderTo: 'knowlTreeDiv',
autoScroll: true
});
knowlTreePanel.store.load();
跟踪发现展开一个节点时就会调用后台action一次。请问后台如何得知当前要展开的节点的Id,以生成其子节点?
或者哪位知道怎么动态生成树?
extend: 'Ext.data.Model',
fields: [{
name: 'id', type: 'string'
},{
name: 'text', type: 'string'
}]
});
var knowlTreeStore = Ext.create('Ext.data.TreeStore',{
model: 'knowlTreeModel',
proxy: {
type: 'ajax',
url: 'knowlPoint.do?method=trunkTree'
},
reader: {
type: 'json'
},
root: {
id: 'rootNode',
text: '根节点',
expanded: false
}
});
var knowlTreePanel = Ext.create('Ext.tree.Panel',{
width: 300,
height: 450,
store: knowlTreeStore,
rootVisible: true,
renderTo: 'knowlTreeDiv',
autoScroll: true
});
knowlTreePanel.store.load();
跟踪发现展开一个节点时就会调用后台action一次。请问后台如何得知当前要展开的节点的Id,以生成其子节点?
或者哪位知道怎么动态生成树?
StringBuilder sb = new StringBuilder();
sb.append("{ id: 'rootnode', text: '知识点', children: [");
sb.append("{ id: '"+UUID.randomUUID().toString()+"', text: '化学',leaf: true},");
sb.append("{ id: '"+UUID.randomUUID().toString()+"', text: '生物',children: [" +
"{id: '"+UUID.randomUUID().toString()+"',text: '动物',leaf: true}]}");
sb.append("]}");
writeJson(response, sb.toString(), null);//write a json string to client
try {
DTypeFacade facade = new DTypeFacade();
writeJson(getResponse(), facade.dtypeJsonTree());
} catch (Exception e) {
// TODO: handle exception
try {
writeJson(getResponse(), "{success:" + false + ",msg:\"查询失败!\"}");
} catch (Exception e2) {
// TODO: handle exception
}
e.printStackTrace();
}
return null;
}
2. DTypeFacadepublic String dtypeJsonTree() {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
sb.append("{ id: 'rootNode', text: '根节点'");
sb.append(CreateTree(1, null));//递归生成树
sb.append("}");
return sb.toString();
}private String CreateTree(int level,String parentId){
List<TbDoctype> nodes = null;
if (level == 1) {
nodes = service.getDTypeByLevel(1, null);
}else {
nodes = service.getDTypeChildren(parentId, null);
}
StringBuilder ssb = new StringBuilder();
if (nodes == null || nodes.size() == 0) {
ssb.append(",leaf: true");
}else {
ssb.append(", children: [");
for (int i = 0; i < nodes.size(); i++) {
TbDoctype doctype = nodes.get(i);
ssb.append("{ id: '" + doctype.getDid() + "', text: '" +
doctype.getDtypecode() + ":" + doctype.getDtypename() +
"', level: "+level);
ssb.append(CreateTree(level+1, doctype.getDid()));
ssb.append("},");
}
ssb.deleteCharAt(ssb.length()-1);
ssb.append("]");
}
return ssb.toString();
}
--计算机学院
---硬件专业
---软件专业
--数学学院
--外国语学院
---法语专业生成以后转换为json字符串传到前台就OK了。希望能帮到你哦~~
楼主这个里的这个getResponse()为啥我这里不能用呢?
完整内容这样:
public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}