`

无限递归生成菜单!

    博客分类:
  • java
 
阅读更多
调用代码:
StringBuffer menus=new StringBuffer();
List<EsbAdminMenuInfo> list=menuServiceImpl.getAll();
buildChildMenu(list,0L,menus);
return menus.toString();



递归代码:
/**
	 * 递归生成菜单结构
	 * @param list 所有的菜单集合
	 * @param parentNoteId 菜单父节点
	 * @param menus 追加节点
	 * */
	public void buildChildMenu(List<EsbAdminMenuInfo> list,Long parentNoteId,StringBuffer menus){
		List<EsbAdminMenuInfo> nodes=new ArrayList<EsbAdminMenuInfo>();
		
		//查找参数parentNoteId与集合中对象的parentNoteId相同的菜单对象
		for(EsbAdminMenuInfo mi : list){
			if(mi.getParentMenuId()==parentNoteId){
				nodes.add(mi);
			}
		}
		for(int i = 0; i<nodes.size(); i++){
			EsbAdminMenuInfo mi =nodes.get(i);
			if(mi.getParentMenuId()==0||mi.getUrl()==null||"".equals(mi.getUrl())){
				//父节点
				menus.append("<div class='parent'><div class='padding'>").append(mi.getMenuName()).append("</div></div>");
			}else if(mi.getUrl()!=null&&!"".equals(mi.getUrl())){
				//只要是子节点第一次就添加<div class='subMenus'> 并记录有一个子节点
				if(i==0){
					countSubMenu++;
					menus.append("<div class='subMenus'>");
				}
				menus.append("<div class='action'><div class='padding'>").
				append("<a href='").append(mi.getUrl()).append("' target='context'>").append(mi.getMenuName()).append("</a></div></div>");
				//结束最外面的<div class='subMenus'>
				if(i==nodes.size()-1){
					for(int j=0;j<countSubMenu;j++){
						menus.append("</div>");
					}
					//每次到了最大的父节点  初始化它的子节点数量
					countSubMenu=0;
				}
			}
			buildChildMenu(list,mi.getMenuId(),menus);
		}
	}

分享到:
评论

相关推荐

    easyUI递归生成菜单树

    本文将深入探讨如何使用EasyUI递归生成菜单树,并结合前后台代码来实现这一功能。 首先,让我们了解菜单树的基本概念。菜单树是一种以树形结构展示数据的控件,通常用于表示层次关系的数据,如网站导航、文件系统或...

    asp.net 无限递归树型菜单... 采用dTree封装的自定义控件

    this.RecursiveTree1.DataTextField("菜单配置","Menu_ID", "Menu_ParentID", "Menu_Name", "Menu_Url", "Menu_Name","",""); 具体重载方法 说明 添加引用后,控件名.点 自行查看... //这里改写成你的数据库链接.. ...

    不用递归实现的无限级树型菜单

    传统的实现方式通常使用递归算法,但这种方法可能会导致内存消耗过大,尤其是在菜单层级很深的情况下。本主题介绍了一种不依赖递归的高效方法来创建无限级树型菜单,具有快速加载的特点。 首先,我们来看`WriteXML....

    vue_ant-design-vue菜单递归

    3. **递归渲染**:在Vue组件中,我们可以利用`v-for`指令和递归组件来渲染无限层级的菜单。首先创建一个递归组件`MenuNode`,它接收一个`MenuItem`作为props,并在自身内部渲染菜单项及其子项: ```javascript !...

    treeview递归无限级树形菜单(递归方式)

    本文将详细讲解如何使用递归方法创建一个无限级的树形菜单,特别适合初学者掌握。 首先,我们要理解树形菜单的基本概念。树形菜单是由节点(节点通常代表一个菜单项)组成的,每个节点可以有零个或多个子节点,形成...

    js无限级分类递归

    在原有的基础上进行二次修改,通过ajax请求,获取json数组,迭代json数组生成多层级的数据字典。当前例子中数据源为模拟的json数据。当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了...

    递归实现的无限级下拉式菜单

    在这个上下文中,递归可能被用来遍历和构建菜单结构,每次调用都会处理一个菜单级别,并生成对应的子菜单项,直到没有更多的子菜单为止。 压缩包内的文件名列表揭示了实现这一功能可能涉及的技术和组件: 1. **Web....

    java递归无限层级树

    // 递归生成子节点 } } } ``` 在实际应用中,我们通常会有一个根节点,初始化时调用`generateTree(rootNode, 0)`,这样就会开始生成整个树结构。为了展示树数据,我们可以提供一个递归的`printTree`方法,逐层...

    由后端flask生成的侧边栏无线级菜单tree

    4. JavaScript处理后端返回的JSON数据,动态生成菜单DOM结构。 5. 实现菜单的展开/折叠逻辑,确保用户体验流畅。 在实际项目中,你可能会遇到性能优化、权限控制、国际化支持等问题,这些都是在构建此类功能时需要...

    无限级 树形菜单 动态生成

    综上所述,"无限级树形菜单 动态生成"项目结合了VS2005的Web开发能力和Sql2000的数据管理功能,实现了在Web页面上展示可动态扩展的、无限层级的菜单系统。这样的系统在网站导航、文件系统、组织架构展示等多个场景...

    .net无限分类 递归

    - **`FillTable()`方法**:此方法是实现无限递归的关键,其参数包括数据表、所有类型的数据列表和当前节点的父ID。它通过查找所有具有指定父ID的类型,将这些类型添加到数据表中,并对每个子类型再次调用自身,形成...

    php无限分类的例子!!!!!!

    6. **无限下拉菜单**:在前端展示无限分类时,可以利用JavaScript和CSS创建无限级的下拉菜单,用户可以通过展开和折叠来查看不同级别的分类。 7. **wxtree**:这个文件可能是一个用于前端显示的树形结构的代码,...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    总的来说,这个项目结合了多种技术,利用Struts2处理请求,Spring进行依赖管理和事务控制,Hibernate处理数据,Freemarker生成动态页面,jQuery提供前端交互,而jquery-treeview则提供了树形菜单的可视化。...

    jquery插件——多级菜单

    4. **递归函数**:为了实现无限级别的多级菜单,通常会使用递归函数。递归允许我们处理具有自我相似结构的数据,例如树形结构的菜单。函数会检查每个菜单项是否有子菜单,如果有,则继续调用自身来处理子菜单。 5. ...

    自己写的php 递归无限分类 附有sql文件

    在实际应用中,这个系统可能还会包括其他功能,比如添加、删除和编辑类别,或者根据需要动态生成菜单。`jquery-1.6.1.min.js`是一个JavaScript库,可能用于增强用户界面,例如实现异步加载分类、交互式菜单等。 总...

    无限级分类js菜单 样本

    创建菜单时,我们需要根据类别层级生成相应的`&lt;ul&gt;`和`&lt;li&gt;`元素,并附加到页面上。 4. **事件处理**:为了让菜单具有交互性,我们需要添加事件监听器,比如点击事件。当用户点击菜单项时,可以展开或折叠其子菜单...

    asp递归无限级分类(含数据库)

    '递归调用,生成子类别菜单 GenerateMenu categoryID Response.Write("&lt;/li&gt;") rs.MoveNext Loop End If rs.Close End Function ``` 在上述代码中,`conn` 是数据库连接对象,`GenerateMenu` 函数接收...

    动态实现无限级树形菜单

    无限级树形菜单意味着菜单可以有任意多的子级,且在运行时能够根据数据库中的数据动态生成。下面我们将深入探讨如何实现这一功能。 首先,我们需要理解无限级树形菜单的基本概念。一个树形结构是由节点(在菜单中...

    无限级分类的非递归实现(存储过程版)

    在数据库设计中,无限级分类是一种常见的需求,例如在网站导航菜单、组织结构或产品类别等场景下。传统的递归方法虽然能实现无限级分类,但随着层级加深,性能会逐渐下降。为了解决这个问题,我们可以采用非递归的...

    js无限极菜单(效果很酷)

    - **数据获取**:在ASP.NET中,可以使用服务器端代码生成JSON格式的数据,其中包含了菜单项及其子项的信息。这可以通过递归遍历数据库中的菜单表来实现。 - **数据解析**:在客户端,JavaScript接收并解析这个JSON...

Global site tag (gtag.js) - Google Analytics