我想使用 java 为 JQuery Dynatree 输出一棵树,但失败了。
public class Category {
String name;
Category parentCategory;
public Category(String name, Category parentCategory) {
super();
this.name = name;
this.parentCategory = parentCategory;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Category getParentCategory() {
return parentCategory;
}
public void setParentCategory(Category parentCategory) {
this.parentCategory = parentCategory;
}
}
主班
import java.util.ArrayList;
import java.util.List;
public class Main {
static Category root;
static Category category1;
static Category category11;
static Category category12;
static Category category2;
static Category category21;
static Category category22;
static Category category3;
public static void main(String[] args) {
root = new Category("root", null);
category1 = new Category("c1", root);
category11 = new Category("c11", category1);
category12 = new Category("c12", category1);
category2 = new Category("c2", root);
category21 = new Category("c21", category2);
category22 = new Category("c22", category2);
category3 = new Category("c3", root);
print(root);
}
public static void print(Category category){
List<Category> childList = getChild(category);
if(category.getParentCategory() == null){ //root
System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
}
else {
//if(childList.size()==0){
// System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
//}
// else {
System.out.println("children:[{title:"+category.getName()+",key:"+category.getName()+",");
// }
}
if(childList.size()==0) return;
for(Category child : childList){
print(child);
}
System.out.println("}]");
System.out.println("}");
}
public static List<Category> getChild(Category category){
List<Category> childList = new ArrayList<Category>();
if("root".equals(category.getName())){
childList.add(category1);
childList.add(category2);
childList.add(category3);
return childList;
}
if("c1".equals(category.getName())){
childList.add(category11);
childList.add(category12);
return childList;
}
if("c2".equals(category.getName())){
childList.add(category21);
childList.add(category22);
return childList;
}
return childList;// empty
}
}
我的输出不正确,应该是这样的:
{title: "root", key: "root",
children: [
{title: "c1", activate: true,
children: [
{title: "c11", key: "c11" },
{title: "c12", key: "c12" }
]
},
{title: "c2", select: true,
children: [
{title: "c21", key: "c21" },
{title: "c22", key: "c22" }
]
},
{title: "c3", hideCheckbox: true }
]
}
我的代码有错误,如何修复?或者使用这个设计,是否有可能得到这个结果?
谢谢