中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用java怎么構造一個無限層級的樹形菜單

發布時間:2020-12-07 16:54:59 來源:億速云 閱讀:287 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關利用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<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<&#63;> 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的方法如下:

/**
   * 顯示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怎么構造一個無限層級的樹形菜單了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌兰浩特市| 象山县| 淮阳县| 萝北县| 临清市| 西平县| 治多县| 萨迦县| 兰考县| 宜黄县| 克东县| 津南区| 湖南省| 沈阳市| 蒙阴县| 曲松县| 仁布县| 甘洛县| 曲麻莱县| 临颍县| 宣恩县| 盐亭县| 堆龙德庆县| 莆田市| 浦江县| 平定县| 本溪| 辽宁省| 肥东县| 万全县| 遂昌县| 台中县| 永仁县| 璧山县| 建平县| 鄂温| 淅川县| 抚顺市| 叙永县| 凤翔县| 沙田区|