java在網站制作實現多級菜單方法

2021-11-26    分類: 網站制作

java實現多級菜單的方法
網站開發的時候我們會對網站的欄目進行分類,一個欄目可以有多個子分類,一個子分類又可以有分裂
1,查詢菜單樹:

public List<Map<String, Object>> queryCategoryInfo() {
List<Map<String, Object>> allMenu = queryAllCategory();
//根節點
List<Map<String, Object>> rootMenu = new ArrayList<Map<String, Object>>();
for (Map<String, Object> nav : allMenu) {
String parentId = String.valueOf(nav.get("parent_id"));
if(parentId.equals("0")){//父節點是0的,為根節點。
rootMenu.add(nav);
}
}
/* 根據Menu類的order排序 */
// Collections.sort(rootMenu, order());
//為根菜單設置子菜單,getClild是遞歸調用的
for (Map<String, Object> nav : rootMenu) {
/* 獲取根節點下的所有子節點 使用getChild方法*/
String id = String.valueOf(nav.get("category_id"));
List<Map<String, Object>> childList = getChild(id, allMenu);
// nav.setChildren(childList);//給根節點設置子節點
nav.put("child", childList);
}
return rootMenu;
}
/**
* 獲取子節點
* @param id 父節點id
* @param allMenu 所有菜單列表
* @return 每個根節點下,所有子菜單列表
*/
private List<Map<String, Object>> getChild(String id,List<Map<String, Object>> allMenu){
//子菜單
List<Map<String, Object>> childList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> nav : allMenu) {
// 遍歷所有節點,將所有菜單的父id與傳過來的根節點的id比較
//相等說明:為該根節點的子節點。
String parentId = String.valueOf(nav.get("parent_id"));
if(id.equals(parentId)){
childList.add(nav);
}
}
//遞歸
for (Map<String, Object> nav : childList) {
String tempId = String.valueOf(nav.get("category_id"));
//nav.setChildren(,getChild(tempId, allMenu));
nav.put("child", getChild(tempId, allMenu));
}
//Collections.sort(childList,order());//排序
//如果節點下沒有子節點,返回一個空List(遞歸退出)
if(childList.size() == 0){
return new ArrayList<Map<String, Object>>();
}
return childList;
}


2,Java 集合 之 List 多級菜單;
package com.menu;
import java.util.List;
public class TestCategory
{
public static String level="";
public static void main(String[] args)
{
MenuManager mm=new MenuManager();
mm.add(new Menu(0,-1,"主控管理系統"));
mm.add(new Menu(100,0,"主控管理"));
mm.add(new Menu(101,0,"公共信息"));
mm.add(new Menu(102,0,"本單位管理"));
mm.add(new Menu(103,0,"下屬管理"));
mm.add(new Menu(104,0,"部門管理"));
mm.add(new Menu(105,0,"職位管理"));
mm.add(new Menu(10000,104,"部門類別"));
mm.add(new Menu(10001,104,"部門信息"));
List<Menu> menuList=mm.getMenuList();
for(int i=0;i<menuList.size();i++)
{
Menu menu=menuList.get(i);
if(menu.getPid()==-1)
{
System.out.println(menu.getName());
showMenu(menu,menuList);
break;
}
}
}
public static void showMenu(Menu parentMenu,List<Menu> menuList)
{
level+="----";
for(int i=0;i<menuList.size();i++)
{
Menu menu=menuList.get(i);
if(menu.getPid()==parentMenu.getId())
{
System.out.println(level+menu.getName());
showMenu(menu,menuList);
}
}
level=level.substring(0,level.length()-4);
}
}
package com.menu;
public class Menu
{
private int id;
private int pid;
private String name;
public Menu(int id, int pid, String name)
{
super();
this.id = id;
this.pid = pid;
this.name = name;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public int getPid()
{
return pid;
}
public void setPid(int pid)
{
this.pid = pid;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
package com.menu;
import java.util.ArrayList;
import java.util.List;
public class MenuManager
{
private List<Menu> menuList=new ArrayList<Menu>();
public void add(Menu menu)
{
menuList.add(menu);
}
public List<Menu> getMenuList()
{
return menuList;
}
public void setMenuList(List<Menu> menuList)
{
this.menuList = menuList;
}
}

網頁名稱:java在網站制作實現多級菜單方法
URL鏈接:http://m.kartarina.com/news27/137577.html

網站建設、網絡推廣公司-創新互聯,是專注品牌與效果的網站制作,網絡營銷seo公司;服務項目有網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站
主站蜘蛛池模板: 国产成年无码AV片在线韩国| 日韩精品人妻系列无码av东京| 国产成人无码AV一区二区在线观看| 国产精品无码国模私拍视频| 亚洲AV无码专区国产乱码电影| 国产精品无码一区二区在线| 亚洲2022国产成人精品无码区 | 无码人妻AV免费一区二区三区 | 亚洲AV无码片一区二区三区| 日韩精品无码久久一区二区三| 色综合久久中文字幕无码| 国产网红主播无码精品| 性色av极品无码专区亚洲| 少妇人妻偷人精品无码视频| 精品人体无码一区二区三区| 亚洲精品无码中文久久字幕| 日木av无码专区亚洲av毛片| 人妻少妇AV无码一区二区| 国产综合无码一区二区色蜜蜜| 高清无码v视频日本www| 精品欧洲AV无码一区二区男男 | 无码孕妇孕交在线观看| 亚洲高清无码专区视频| 国产成人无码精品久久久露脸| 亚洲AV无码久久久久网站蜜桃| 亚洲av无码无在线观看红杏| 亚洲中文字幕无码永久在线| 亚洲日韩VA无码中文字幕| 人妻老妇乱子伦精品无码专区| WWW久久无码天堂MV| 无码综合天天久久综合网| 国产精品无码亚洲一区二区三区| 亚洲av无码成人精品国产| 性生交片免费无码看人| 国产精品无码久久av| 亚洲精品无码久久久久AV麻豆| 黄A无码片内射无码视频| 国产亚洲?V无码?V男人的天堂 | 亚洲精品无码乱码成人| 曰韩精品无码一区二区三区| 国产亚洲3p无码一区二区|