激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現構造無限層級樹形菜單

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

2021-01-14 15:49我是帥帥的玉米 Java教程

這篇文章主要介紹了java實現構造無限層級樹形菜單,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

這里來講一下后臺java如何構造多叉樹,這樣前臺就可接收到數據遞歸構造樹形菜單了。

我們來理一下如何實現構造多叉樹的邏輯吧,其實整個問題概括起來就是

1、構造一個實體類,用來存儲節點,所以我們構造的需要四個對象(id,pid,name,和chirenList)

2、構造菜單結構

3、構造子菜單,如此循環,通過pid判斷上級菜單

具體實現:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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,完整代碼如下,可直接復制使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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<String,Object> mapArray = new LinkedHashMap<String, Object>();
  public List<Tree> menuCommon;
  public List<Object> list = new ArrayList<Object>();
   
  public List<Object> menuList(List<Tree> menu){  
    this.menuCommon = menu;
    for (Tree x : menu) {  
      Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
      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<Object> lists = new ArrayList<Object>();
    for(Tree a:menuCommon){
      Map<String,Object> childArray = new LinkedHashMap<String, Object>();
      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的方法如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
   * 顯示APP樹形結構
   */
  @RequestMapping(value = { "getAPPTree" }, produces = "text/html;charset=UTF-8")
  @ResponseBody
  public String getAPPTree(HttpServletRequest request, HttpServletResponse response) throws Exception {
    Map<String, Object> returnmap = new HashMap<>();
    MenuTreeUtil menuTree = new MenuTreeUtil();
    PageData pd = this.getPageData();
    try {
      //這里的方法是根據前臺的機構類型代碼來查找數據庫數據的,這里不多加解釋,因人而異
      List<Tree> list = dataDicService.buildTree(pd.getString("instType"));
      List<Object> 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構造樹形菜單數據就說到這里啦,希望對大家有幫助,我的分享一般都是特別詳細的,除了涉及項目隱私之外,是不會對大家有所保留的喲,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000011428318

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄污视频在线看 | 黄色网址在线免费 | 黄色免费在线电影 | 黄色片网页 | 欧美一区二区网站 | 欧美性精品videofree | 免费在线看a | 成人午夜天堂 | 国产a级久久 | av免费在线观看av | 国产成人高潮免费观看精品 | 国产一区二区在线免费观看 | 国产精品久久久久久久娇妻 | 久久华人 | 久草亚洲视频 | 一本色道久久综合狠狠躁篇适合什么人看 | 精品视频 久久久 | 精品三级内地国产在线观看 | 国产一区二区欧美精品 | 亚洲男人的天堂在线视频 | 91看大片| 99影视在线视频免费观看 | 成人免费观看在线视频 | 国产一区二区三区手机在线 | 国产福利不卡一区二区三区 | 欧美日韩亚洲成人 | 中文字幕亚洲一区二区三区 | 欧美成人精品一区二区 | 法国极品成人h版 | 久久影院国产精品 | 精品xxxx户外露出视频 | 亚洲午夜国产 | 亚洲成人免费电影 | 久久九九热re6这里有精品 | 午夜丰满少妇高清毛片1000部 | 亚洲xxx在线观看 | 精品午夜影院 | 久久久久国产成人免费精品免费 | 羞羞视频免费网站含羞草 | 日韩黄色av | 一本一道久久久a久久久精品91 |