国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java實現構造無限層級樹形菜單

seasonley / 672人閱讀

摘要:繼續填上篇文章的坑,這里來講一下后臺如何構造多叉樹,這樣前臺就可接收到數據遞歸構造樹形菜單了。

繼續填上篇文章的坑,這里來講一下后臺java如何構造多叉樹,這樣前臺就可接收到數據遞歸構造樹形菜單了。

我們來理一下如何實現構造多叉樹的邏輯吧,其實整個問題概括起來就是
1、構造一個實體類,用來存儲節點,所以我們構造的需要四個對象(id,pid,name,和chirenList)
2、構造菜單結構
3、構造子菜單,如此循環,通過pid判斷上級菜單

具體實現:
1、這里構造Tree.java實體類

package com.tcl.jr.crm.entity;

/**
 * 類名稱:Tree
 * 類描述:樹形結構
 */
public class Tree {

    private String id;
    private String pId;
    private String name;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getpId() {
        return pId;
    }

    public void setpId(String pId) {
        this.pId = pId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Tree [id=" + id + ", pId=" + pId + ", name=" + name + "]";
    }

}

2、封裝樹形結構類,這里我封裝成一個通用的工具類,方便項目中使用,MenuTreeUtil.java,完整代碼如下,可直接復制使用:

package com.tcl.jr.crm.util;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.tcl.jr.crm.entity.Tree;

/**
 * 類名稱:MenuTreeUtil
 * 類描述:遞歸構造樹型結構
 */
public class MenuTreeUtil {
    
    public static Map mapArray = new LinkedHashMap();  
    public List menuCommon;  
    public List list = new ArrayList();  
      
    public List menuList(List menu){      
        this.menuCommon = menu;  
        for (Tree x : menu) {     
            Map mapArr = new LinkedHashMap();  
            if(x.getpId()=="0"){  
                mapArr.put("id", x.getId());  
                mapArr.put("name", x.getName());    
                mapArr.put("pid", x.getpId());    
                mapArr.put("childList", menuChild(x.getId()));    
                list.add(mapArr);  
            }  
        }     
        return list;  
    }  
   
    public List menuChild(String id){  
        List lists = new ArrayList();  
        for(Tree a:menuCommon){  
            Map childArray = new LinkedHashMap();  
            if(a.getpId() == id){  
                childArray.put("id", a.getId());  
                childArray.put("name", a.getName());  
                childArray.put("pid", a.getpId());  
                childArray.put("childList", menuChild(a.getId()));
                lists.add(childArray);  
            }  
        }  
        return lists; 
    }  

}

3、最后在控制臺請求方法調用數據就行了,在controller的方法如下:

/**
     * 顯示APP樹形結構
     */
    @RequestMapping(value = { "getAPPTree" }, produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String getAPPTree(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map returnmap = new HashMap<>();
        MenuTreeUtil menuTree = new MenuTreeUtil();
        PageData pd = this.getPageData();
        try {
            //這里的方法是根據前臺的機構類型代碼來查找數據庫數據的,這里不多加解釋,因人而異
            List list = dataDicService.buildTree(pd.getString("instType"));
            List menuList = menuTree.menuList(list);
            //區別于web端,這邊APP端list不能轉為json格式,直接將list傳給前臺,轉成json對象的話vuejs前臺無法識別渲染
            returnmap.put("list", menuList);
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return JsonMapper.toJsonString(returnmap);
    }

4、然后前臺ajax調用第三部的接口方法就而已請求到所需的數據,如何渲染成好的前臺頁面,參照我另一篇文章:vuejs使用遞歸組件實現樹形目錄

java構造樹形菜單數據就說到這里啦,希望對大家有幫助,我的分享一般都是特別詳細的,除了涉及項目隱私之外,是不會對大家有所保留的喲

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67654.html

相關文章

  • 項目中用到的樹形數據

    摘要:經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最終選用來維護樹節點之間的關系。以權限樹為例,做一個樹形數據工具類的設計。 1.簡介 ? 在一些管理系統中一般都會用到,會用到一些樹形數據,例如部門組織以及權限等數據,都得生成樹形數據,需要寫一些樹形數據生成工具,一般使用遞歸的方式,性能低下還可能會導致爆棧。經過分析和思考,我決定不采用遞歸的方式來編寫樹形數據的處理,最...

    douzifly 評論0 收藏0
  • 實現一個可無限折疊的table

    摘要:但實際上就是在上點擊時對其子集進行隱藏或顯示通過縮進的距離來表現層級關系在代碼里很東西其實都是偽裝出來的,例如我們要實現的這個可無限折疊的。 前言 如何在table上實現一個可折疊展開子節點的table?先看下最終實現效果圖: showImg(https://segmentfault.com/img/remote/1460000017033990?w=758&h=453); 其實這個項...

    crossea 評論0 收藏0
  • js遞歸,無限分級樹形折疊菜單

    摘要:效果圖表結構形式數據數據第一級是第二級是廣東第二級是廣西第三級是玉林第三級是北流廣東廣州天河白云廣西玉林北流深圳東莞松山湖部分獲取省一級遞歸結構形式數據數據廣東廣州天河白云深圳東莞松山湖廣西玉林北流部分獲取省一級遞歸兩者區別數據表形式數據遞 效果圖 showImg(https://segmentfault.com/img/bVbi519?w=883&h=437); mysql表結構形式...

    HitenDev 評論0 收藏0
  • 分層數據Hierarchical Data探索(1.遞歸)

    摘要:分層數據探索例如無限級分類多級菜單省份城市引言什么是分層數據類似于樹形結構,除了根節點和葉子節點外,所有節點都有一個父節點和一個或多個子節點。接下來我會先通過一般方法和遞歸方法來實現無限極分類,然后再通過兩種數據模型來談一談分層數據的處理。 分層數據Hierarchical Data探索(例如:無限級分類、多級菜單、省份城市) 引言 什么是分層數據? 類似于樹形結構,除了根節點和葉子節...

    yzd 評論0 收藏0
  • JavaScript實現無限級遞歸樹

    摘要:需求最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據如地區的級聯或菜單的樹形結構省掉了一層處理。當然,沒用好就相當于一堆廢鐵,甚至將導致一些不可預料的結果。相比起遞歸,我更喜歡這種方法。 需求 最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據(如地區的級聯或菜單的樹形結構)省掉了一層處理。換了個后臺小哥哥返回了扁平...

    atinosun 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<