Javaは無限階層のツリーを作成するためのメニューを実現します。


ここで、バックグラウンドjavaはどうやってマルチツリーを作りますか?そうすると、フロントはデータを受信して再帰的にツリーメニューを作ります。
どのように構成されたマルチツリーの論理を実現するかを整理しましょう。
1、実体類を構築し、ノードを記憶するために、私達が構築するには4つのオブジェクト(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<?> 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、最終的にコンソールでデータを呼び出す方法は以下の通りです。

/**
   *   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は第三部のインターフェース方法を呼び出して、必要なデータを要求するだけで、どうやって良いフロントページにレンダリングするか、私のもう一つの文章を参照してください。
java構造ツリーのデータはここまでです。皆さんに助けてほしいです。私の共有は一般的に詳しくて、プロジェクトのプライバシーに関わる以外は、みんなに保留しないです。皆さんも応援してください。