熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

基於jsTree的無限級樹JSON數據的轉換

2013-11-15 11:41:39  來源: JSP教程 

  jstree 主頁

  其中提供了一種從後台取數據渲染成樹的形式

    $(#mytree)tree({
      data  : {
        type  : json
        url : ${ctx}/user/power!listdo
      }
});

  對於url中返回的值必須是它定義的json數據形式

   $(#demo)tree({
  data  : {
    type  : json
    json  : [ 
      { attributes: { id : pjson_ } state: open data: Root node  children : [
        { attributes: { id : pjson_ } data: { title : Custom icon icon : /media/images/okpng } }
        { attributes: { id : pjson_ } data: Child node  }
        { attributes: { id : pjson_ } data: Some other child node }
      ]} 
      { attributes: { id : pjson_ } data: Root node  } 
    ]
  }
});

  這裡需要一個從後台實例集合轉換為它規定的json數據的形式

   /**
     * 無限遞歸獲得jsTree的json字串
     * 
     * @param parentId
     *            父權限id
     * @return
     */
    private String getJson(long parentId)
    {
        // 把頂層的查出來
        List<Action> actions = actionManagerqueryByParentId(parentId);
        for (int i = ; i < actionssize(); i++)
        {
            Action a = actionsget(i);
            // 有子節點
            if (agetIshaschild() == )
            {
                str += {attributes:{id:\ + agetAnid()
                        + \}state:\open\data:\ + agetAnname() + \ ;
                str += children:[;
                // 查出它的子節點
                List<Action> list = actionManagerqueryByParentId(agetAnid());
                // 遍歷它的子節點
                for (int j = ; j < listsize(); j++)
                {
                    Action ac = listget(j);
                    //還有子節點(遞歸調用)
                    if (acgetIshaschild() == )
                    {
                        thisgetJson(acgetParentid());
                    }
                    else
                    {

                        str += {attributes:{id:\ + acgetAnid()
                                + \}state:\open\data:\ + acgetAnname()
                                + \  +    };
                        if (j < listsize()  )
                        {
                            str += ;
                        }
                    }
                }
                str += ];
                str +=    };
                if (i < actionssize()  )
                {
                    str += ;
                }
            }
        }
        return str;
    }

  調用

   @ornventionannotationAction(results =
    { @Result(name = success location = /main/user/actionlistjsp) })
    public String list()
    {
        String str = [;
        // 從根開始
        str += thisgetJson();
        str += ];
        thisrenderJson(str);
        return null;
    }

  其中Action是菜單類或權限類等的實體

  效果圖

  


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19451.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.