91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

利用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

许昌县| 育儿| 临清市| 桃园县| 辽源市| 宁海县| 商河县| 玉田县| 漾濞| 彭山县| 合阳县| 霍州市| 洪泽县| 定兴县| 高唐县| 通辽市| 洪湖市| 东台市| 兴和县| 年辖:市辖区| 洞口县| 格尔木市| 潞城市| 稷山县| 福建省| 岳西县| 北川| 台江县| 兴安县| 东阳市| 湖口县| 嘉义市| 梁山县| 天津市| 宜宾市| 神池县| 常德市| 石泉县| 洛阳市| 潞西市| 鹤岗市|