Javaは無限階層のツリーを作成するためのメニューを実現します。
ここで、バックグラウンドjavaはどうやってマルチツリーを作りますか?そうすると、フロントはデータを受信して再帰的にツリーメニューを作ります。
どのように構成されたマルチツリーの論理を実現するかを整理しましょう。
1、実体類を構築し、ノードを記憶するために、私達が構築するには4つのオブジェクト(id、pid、name、chirenList)が必要です。
2、構造メニュー構造
3、サブメニューを作って、このように循環して、上メニューをpidで判断します。
具体的な実現:
1、ここでTree.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構造ツリーのデータはここまでです。皆さんに助けてほしいです。私の共有は一般的に詳しくて、プロジェクトのプライバシーに関わる以外は、みんなに保留しないです。皆さんも応援してください。