0

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 }       
      ]
    }

コードにバグがあります。修正方法は? またはこの設計を使用して、この結果を得ることができますか?

ありがとう

4

1 に答える 1