递归显示无限级 导航菜单

构建高效无限级树型菜单的非递归方法 HTTP Handler是ASP.NET框架中的一个重要概念,它是IHttpHandler接口的实现类,用于处理HTTP请求并生成响应。HTTP Handler可以被看作是一个处理特定HTTP请求的端点,如.aspx、.ashx、*.asmx等。它运行在IIS服务器上,接收来自客户端的请求并返回响应。当一个请求到达服务器后,ASP.NET框架会根据请求的文件扩展名来决定使用哪个HTTP Handler来处理请求。 阅读详情


菜单的实体

 

 

package com.fenjin.bank.model;

import java.util.HashSet;
import java.util.Set;

/**
 * Menu entity. @author MyEclipse Persistence Tools
 */

public class Menu implements java.io.Serializable {

 // Fields

 /**
  *
  */
 private static final long serialVersionUID = -6930624483390675234L;
 private Integer id;
 private Menu menu;
 private String name;
 private Integer sortId;
 private String urlPath;
 public String getUrlPath() {
  return urlPath;
 }

 public void setUrlPath(String urlPath) {
  this.urlPath = urlPath;
 }

 private Set<Menu> menus = new HashSet<Menu>(0);

 // Constructors

 /** default constructor */
 public Menu() {
 }

 /** full constructor */
 public Menu(Menu menu, String name, Set<Menu> menus,int sortId) {
  this.menu = menu;
  this.name = name;
  this.menus = menus;
  this.sortId=sortId;
 }

 // Property accessors

 public Integer getSortId() {
  return sortId;
 }

 public void setSortId(Integer sortId) {
  this.sortId = sortId;
 }

 public Integer getId() {
  return this.id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public Menu getMenu() {
  return this.menu;
 }

 public void setMenu(Menu menu) {
  this.menu = menu;
 }

 public String getName() {
  return this.name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Set<Menu> getMenus() {
  return this.menus;
 }

 public void setMenus(Set<Menu> menus) {
  this.menus = menus;
 }

}

菜单的hbm文件

 

 <?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
< !--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
< hibernate-mapping>
    <class name="com.fenjin.bank.model.Menu" table="menu" catalog="bank">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <many-to-one name="menu" class="com.fenjin.bank.model.Menu" fetch="select">
            <column name="pid" />
        </many-to-one>
        <property name="urlPath" type="java.lang.String">
            <column name="urlPath" length="1000" />
        </property>
       
          <property name="name" type="java.lang.String">
            <column name="name" length="400" />
        </property>
          <property name="sortId" type="java.lang.Integer">
            <column name="sortId" />
        </property>
       
        <set name="menus" inverse="true">
            <key>
                <column name="pid" />
            </key>
            <one-to-many class="com.fenjin.bank.model.Menu" />
        </set>
    </class>
< /hibernate-mapping>
action层部门代码

 

public void  getMenuHtml(int id,int level){
 
  StringBuffer strPre = new StringBuffer("");
  for(int i=0; i<level; i++) {
   strPre.append("----");
  }
  menuList=service.findByPid(id);
  for(Menu m:menuList){
   sb.append("<li> <a href='#'>");
   sb.append(m.getName()+m.getId());
   sb.append("</a>"+"\n");
  
   System.out.println(strPre+m.getName()+m.getId());
   if(service.findByPid(m.getId()).size()>0){
    sb.append("<ul>"+"\n");
    getMenuHtml(m.getId(),level+1);
    sb.append("</ul>"+"\n");
   }
  }
 }

 

public String execute() throws Exception {
 
  sb.append("<head>"
 + "<script type='text/javascript' src='jss/jquery.js'></script>"
 + "<script type='text/javascript' src='jss/jquery.dimensions.js'></script>"
 + "<script type='text/javascript' src='jss/jquery.positionBy.js'></script>"
 + "<script type='text/javascript' src='jss/jquery.jdMenu.js'></script>"
 + "<link rel='stylesheet' href='css/jquery.jdMenu.css' type='text/css' />"
 +   "</head>"
 +  "<body>");
  
  sb.append("<div style='border: 1px solid blue; '> <ul class='jd_menu jd_menu_slate'>"+"\n");
  getMenuHtml(0,0);
  sb.append("</ul> </div>");
  sb.append("</body> </html>");
  System.out.println(sb.toString());
  response.getWriter().print(sb.toString());
  return null;
 }

前台 ajax 加载

 <script type="text/javascript">
 $(document).ready(function() {
 $("#lanmu-body").load("listMenu");
});
< /script>

ASP.NET平台下实现无限级树形菜单的构建 无限级树型菜单是一种在图形用户界面中广泛应用的组件,它模拟了现实世界中的树状结构,用于展示具有层级关系的数据。这种菜单能够让用户逐层深入查看各个节点,非常适合用来组织和展示如网站导航、文件夹结构、组织架构等信息。与有限级的树型菜单不同的是,无限级树型菜单可以扩展到任意深度,这对于复杂的层级数据展示是必不可少的。序列化是指将对象状态转换为可保持或传输的格式的过程。在Web开发中,JSON和XML是最常用的两种序列化格式。是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 阅读详情

相关推荐

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

不用递归实现的无限级树型菜单,加载速度超快。

递归循环菜单

之前一直不理解递归,直到这次用到之后慢慢理解了,代码如下:  ///         /// 递归调用添加包含子集         ///         ///         ///         ///         private void GetLisyByDiGui(List allList, List list, string pid)        

chengziwei_ningmeng的博客 564

递归加载菜单

递归加载菜单源代码,帮助大家学习与开发.

Java递归/遍历,实现遍历父子级菜单

【代码】Javai递归实现遍历父子级菜单。

weixin_67573348的博客 1957

bootstrap-treeview 实现的web后台管理 多级(无限级)分类菜单-springboot mybatis mysql

bootstrap-treeview 实现的web后台管理常用到的左侧 多级(无限级)分类菜单-idea springboot mybatis mysql技术实现,完整的一个小实例,有效果图,数据库表字段,下载即可运行。

c#用递归方法菜单遍历

用递归方法遍历c#菜单的源代码,有需要的可以下载下来看看!

vue el-menu菜单递归循环创建

说明: 根据返回的数据动态循环渲染菜单,是否具有子级目录递归创建所有目录并具有复用性,动态绑定相关属性; 解决步骤: 1、使用element组件(具体步骤不在赘述) 2、先创建公共组件 (1)在第一级菜单循环过程中,如判断出当前菜单存在着子级菜单,渲染出当前菜单,并将当前菜单的子级属性(例如:child:[数组]),利用子组件传参的方式,传给我们现在正在封装的组件(俗称:无限套娃)。 注意: 组件必须要添加name属性,名称与注册时命名一致; 完整代码: (1)封装的子组件 <template>

qq_41007321的博客 1万+

java利用maven创建无限级联菜单

无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单无限级联菜单

递归方法无限级菜单--javascript v1.0

菜单遍历用递归的方法最简单,不用考虑有多少级,可以实现全部遍历,前提是后台代码的规范性,一般从后台返回的数据是json格式,这里有两种结构,一种是用pid的形式,一种是用children的形式。

张营的技术博客 5466

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

简单的代码,递归方式,简单的样式设计,方便初学菜单设计者应用。

告别手动标注!用ENVI Classic高效搞定高光谱图像语义分割标签(以农业/地物分类为例)

本文详细介绍了如何利用ENVI Classic实现高光谱图像的半自动化智能标注,特别针对农业和地物分类场景。通过光谱特征分析、智能标注技巧和MAT文件转换,显著提升标注效率和质量,助力AI模型训练。

weixin_28694169的博客 251

html无限级列表显示,递归显示无限级 导航菜单

package com.fenjin.bank.model;import java.util.HashSet;import java.util.Set;/*** Menu entity. @author MyEclipse Persistence Tools*/public class Menu implements java.io.Serializable {// Fields/****/pri...

weixin_35886058的博客 398

三菱PLC FX3U温度控制系统案例

U0\G100是平均次数的设置,设置为100个数据取平均,这样数据显示更加稳定,通道1的数据显示再U0\G10里面,温度模块的数据对应是0~150°输出0~10V,对应到0~10000的数据10000是150°的66.667倍,因此把数据传送到D0后转换成浮点数,再去除以66.667,就得到实际的温度了,数据存放到D2。触摸屏软件使用EBpro软件,设计界面如下,右边的是温度的实时曲线图,左边的是温度报警表,当当前温度超过了报警温度这种时,就会在这个表格上显示对应对应的报警。(1)实时显示温度值;

u010670857的博客 4059

react+antd breadcrumb实现无限级面包屑

react+antd breadcrumb实现无限级面包屑,递归无限级面包屑导航

qq_36384745的博客 3310

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4618

特征选择/筛选方法总结

作者:jliang https://blog.youkuaiyun.com/jliang3 1.特征选择介绍 1)特征分类 相关特征:对于学习任务(例如分类问题)有帮助,可以提升学习算法的效果; 无关特征:对于我们的算法没有任何帮助,不会给算法的效果带来任何提升; 冗余特征:不会对我们的算法带来新的信息,或者这种特征的信息可以由其他的特征推断出; 2)特征选择的目的 对于一个特定的学习算法...

jliang3的博客 8万+

ASP+ACCESS实现的无限级目录树

下载地址:http://www.knowsky.com/download/treemenu.rar关键代码:set conn=server.createobject("ADODB.CONNECTION")connstr="DBQ="+server.mappath("db1.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)

KanJing—程序中心 1210

YOLOv11改进策略【Conv和Transformer】| IJCAI 2024 利用FreqFormer中的SFA 空间 - 频率注意力和CTA 通道转置注意力 二次改进C3k2

在FreqFormer模型中,SFA(Spatial-Frequency Attention)和CTA(Channel Transposed Attention)模块是关键组成部分,它们针对传统Transformer在图像超分辨率任务中的不足而设计,旨在更好地恢复高频细节,提升模型性能。

Limiiiing的博客 758

商品分类展示

商品分类展示

qq_61984694的博客 297

unitree-G1外接 USB 麦克风完整配置指南

首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device]

m0_47999117的博客 599

思科 MIB 库

思科 MIB

m0_54931486的博客 770

php实现无限级分类及分类数据渲染

php实现无限极分类数据渲染

一只胡萝卜 583

UCIE Specification详解(八)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1608

PHP无限分类实现

以前实现无限分类都没好好研究过,今天突然来兴趣就随手写了一个递归的无限极分类,希望对大家有借鉴意义!<?php /*模拟数据库查询出来的分类数据*/ $data = array( array('id'=>1,'name'=>1,'fid'=>0), array('id'=>2,'na...

weixin_34146410的博客 116

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

使用 Element-UI 的 navMenu 组件实现无限级下拉导航菜单并实现路由跳转和默认当前路由高亮样式

看过Element-UI的导航菜单组件的文档的同学应该了解到文档的demo都是有限级的菜单,然而现实场景业务通常有可能是这样子: (1)菜单由后台接口返回; (2)前端写死,但是业务需求是不定级别的导航菜单。下面就为实现无限级下拉导航菜单献上code! 一:实现无限级下拉的思路是:递归菜单数组数据。 二:实现操作是:组件调用自己本身从而达到实现递归菜单数据。 (1)父组件:menu.vue // ...

CCG_T的博客 2905

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: SpringMVC @RequestBody接收Json对象字符串
下一篇: java web简单权限管理设计 (递归用法)
WhtBk
博客等级 码龄11年 12粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值