Tree的问题,tree的数据加载不了,不知道是什么原因,高手们请帮我看看!
只是显示"目录树根节点",但是节点数据能正确的从后台取出,就是不能在树上显示出来?
搞了半天了,不能为什么????
代码如下
jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ include file="/common/taglibs.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login</title>
<link rel="stylesheet" type="text/css" href="styles/ext/ext-all.css">
<script type="text/javascript" src="scripts/ext/ext-base.js"></script>
<script type="text/javascript" src="scripts/ext/ext-all.js"></script>
<script>
Ext.onReady(function(){
var Tree = Ext.tree;
//定义根节点的Loader
var treeloader=new Tree.TreeLoader({dataUrl:'/listSort?parentId=0&purpose=1'});
//异步加载根节点
var rootnode=new Tree.AsyncTreeNode({
id:'1',
text:'目录树根节点'
});
var treepanel = new Tree.TreePanel({
//renderTo:"tree_div",//如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。
el:'tree_div', //填充区域
rootVisible:true, //隐藏根节点
border:true, //边框
animate:true, //动画效果
autoScroll:true, //自动滚动
enableDD:false, //拖拽节点
containerScroll:true,
loader:treeloader
});
//设置根节点
treepanel.setRootNode(rootnode);
//响应事件,传递node参数
treepanel.on('beforeload',
function(node){
treepanel.loader.dataUrl='/listSort?parentId=0&purpose=1'+node.id; //定义子节点的Loader
});
treepanel.render();
rootnode.expand(false,false);
});
</script>
</head>
<body>
<div id="tree_div" style="height:101%;width:100%"></div>
</body>
</html>
取节点的servlet中的方法
这里的数据是能正确返回为json格式化数据的
public void list(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
Integer purpose=null;
if(request.getParameter("purpose")!=null && !"".equals(request.getParameter("purpose"))){
purpose=Integer.parseInt(request.getParameter("purpose"));
request.setAttribute("purpose", purpose);
}
Integer parentId=null;
if(request.getParameter("parentId")!=null && !"".equals(request.getParameter("parentId"))){
parentId=Integer.parseInt(request.getParameter("parentId"));
request.setAttribute("parentId", parentId);
}
List<SortBean> listSort=sortService.listSortByParentId(purpose, parentId);
List<TreeNode> listTree=null;
if(listSort!=null && listSort.size()>0){
listTree=new ArrayList<TreeNode>();
TreeNode tree=null;
//将从数据库中取的数据转换为TreeNode
for(SortBean sort : listSort){
tree=new TreeNode();
tree.setId(sort.getId().toString());
tree.setText(sort.getName());
List<SortBean> list2=sortService.listSortByParentId(sort.getPurpose(), sort.getId());
tree.setLeaf(list2.size()>0?true:false);
tree.setExpandable(false);
listTree.add(tree);
}
}
JSONArray jsonArray =null;
if(listTree!=null){
boolean scriptTag = false;
String cb = request.getParameter("callback");
if (cb != null) {
scriptTag = true;
}
response.setContentType("text/x-json;charset=UTF-8");
Writer out;
try {
out = response.getWriter();
jsonArray = JSONArray.fromObject(listTree);
if (scriptTag) {
out.write(cb + "(");
}
JSONObject jsobjcet = new JSONObject();
jsobjcet.put("totalCounts", listTree.size());
jsobjcet.put("root", jsonArray);
response.getWriter().print(jsonArray);
// out.write(jsobjcet.toString());
System.out.println(jsobjcet.toString());
out.write("{\"recordCount\":\"" +listTree.size()+ "\",\"datalist\":"+ jsonArray.toString()+ "}");
if (scriptTag) {
out.write(");");
}
//JSONArray JsonArray = JSONArray.fromObject(TreeNodeArray); //�õ�JSON����
} catch (IOException e) {
e.printStackTrace();
}
}
//return jsonArray;
}
用的两个Bean
SortBean.java
public class SortBean implements Serializable{
private static final long serialVersionUID = 5882317401560085117L;
private Integer id;
private String name;
private Integer parentId;
private Integer purpose;
public Integer getPurpose() {
return purpose;
}
get,set方法略...
}
TreeNode.java
public class TreeNode implements Serializable{
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
}
private String id; //ID
private String text; //节点显示
private String cls; //图标
private boolean leaf; //是否叶子
private String href; //链接
private String hrefTarget; //链接指向
private boolean expandable; //是否展开
private String description; //描述信息
//get、set方法。略。
}
}