java递归实现多级菜单栏_vue+ java 实现多级菜单递归效果

效果如图:

2019121284721149.png?2019111284738

大概思路:树形视图使用的是vue官方事例代码,java负责封装数据,按照vue官方事例的数据结构封装数据即可。有两个需要关注的点:

1.官方事例的数据结构是一个对象里面包含着集合,而不是一个集合对象 2.递归算法

上代码:

前端:html+js

body {

font-family: Menlo, Consolas, monospace;

color: #444;

}

.item {

cursor: pointer;

}

.bold {

font-weight: bold;

}

ul {

padding-left: 1em;

line-height: 1.5em;

list-style-type: dot;

}

{{ item.name }}

[{{ isOpen ? '-' : '+' }}]

class="item"

v-for="(child, index) in item.children"

:key="index"

:item="child"

@make-folder="$emit('make-folder', $event)"

@add-item="$emit('add-item', $event)"

>

+

Vue.component('tree-item', {

template: '#item-template',

props: {

item: Object

},

data: function () {

return {

isOpen: false

}

},

computed: {

isFolder: function () {

return this.item.children &&

this.item.children.length

}

},

methods: {

toggle: function () {

if (this.isFolder) {

this.isOpen = !this.isOpen

};

},

makeFolder: function () {

if (!this.isFolder) {

this.$emit('make-folder', this.item)

this.isOpen = true

}

}

}

})

var demo = new Vue({

el: '#demo',

data: {

treeData: {}

},

methods: {

makeFolder: function (item) {

Vue.set(item, 'children', [])

this.addItem(item)

},

addItem: function (item) {

item.children.push({

name: 'new stuff'

})

},

searchData:function(){

debugger;

axios.get('menuRoleLimitBLH_searchMenus.do?pageType=1')

.then(response => (

this.treeData = response.data.json.menuMaps

))

.catch(error => console.log(error));

}

},

created() {

this.searchData();

},

})

后台:java +mysql,一共三个方法,分别是:1.获取请求 2获取所有菜单 3递归菜单的父子关系

/**

* Purpose:菜单列表页面

* @author JaxWan

* @param req

* @return IZrarResponse

*/

public IZrarResponse searchMenus(IZrarRequest req){

IZrarResponse res = new ZrarResponse();

String pageType = req.getParameter("pageType");

if(StringUtil.isNotNull(pageType)){

List EwTreeVOs = dao.selectList("selectAllMenuTree");

List> menus = this.getMenusList(EwTreeVOs);

Map map = new HashMap();

map.put("id", 1);

map.put("name", 2);

map.put("children", menus);

res.addJson("menuMaps", map);

}else {

res.addPage("pages/ewsys/dept/menu_role_limit.jsp").addJSTL("isExtForm", false).addJSTL("isEmptyForm", false);

}

return res;

}

/**

* Purpose:获取菜单集合

* @author JaxWan

* @param EwTreeVOs

* @return List>

*/

public List> getMenusList(List EwTreeVOs){

List> menus = new ArrayList>();

for (int i = 0; i < EwTreeVOs.size(); i++) {

EwTreeVO ewTreeVO = EwTreeVOs.get(i);

String id = ewTreeVO.getId();

String name = ewTreeVO.getName();

String pId = ewTreeVO.getpId();

Map map = new HashMap();

map.put("id", id);

map.put("name", name);

map.put("pId", pId);

Map map2 = this.digui(id, EwTreeVOs,map);

menus.add(map2);

}

return menus;

}

/**

* Purpose:递归父子关系

* @author JaxWan

* @param id 父节点id

* @param EwTreeVOs2 菜单集合

* @param mapResult 结果集

* @param lists 孩子集合

* @return Map

*/

public Map digui(String id,List EwTreeVOs2,Map mapResult){

List> lists = new ArrayList>();

for (int j = 0; j < EwTreeVOs2.size(); j++) {

EwTreeVO ewTreeVO2 = EwTreeVOs2.get(j);

String id2 = ewTreeVO2.getId();

String name2 = ewTreeVO2.getName();

String pId2 = ewTreeVO2.getpId();

if(id.equals(pId2)){

Map map2 = new HashMap();

map2.put("id", id2);

map2.put("name", name2);

map2.put("pId", pId2);

lists.add(map2);

EwTreeVOs2.remove(j);

j--;

}

}

mapResult.put("children", lists);

for (int i = 0; i < lists.size(); i++) {

Map tempMap = lists.get(i);

String id1 = (String) tempMap.get("id");

this.digui(id1,EwTreeVOs2,tempMap);

}

return mapResult;

}

总结

以上所述是小编给大家介绍的vue+ java 实现多级菜单递归效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文标题: vue+ java 实现多级菜单递归效果

本文地址: http://www.cppcns.com/ruanjian/java/292425.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mfc打开一个.txt文件并进行处理_文件处理方法Python

你好&#xff0c;我是goldsunC让我们一起进步吧&#xff01;1. 文件说明文件是存储在存储器上的数据序列&#xff0c;在计算机中&#xff0c;所有文件都是以二进制的方式进行存储的&#xff0c;而文件的展示形式一般分为两种&#xff1a;文本形式和二进制形式。文本文件由单一特…

qt的如何调整显示不为科学记数法_Excel操作技巧:如何将信息快速准确的录入Excel?...

前面几篇文章中&#xff0c;给大家介绍了一些excel的基本操作技巧&#xff0c;以及如何高效地浏览表格。相信大家多少都会获得一点收获&#xff0c;希望能够为大家提供一些工作上的帮助。工作中&#xff0c;老板经常会安排我们手动输入一些数据&#xff0c;考虑到我们要不停的手…

如何给mysql表添加百万条数据_给mysql一百万条数据的表添加索引

直接alter table add index 添加索引&#xff0c;执行一个小时没反应&#xff0c;并且会导致锁表&#xff1b;故放弃该办法&#xff0c;最终解决办法如下&#xff1a;一.打开mysql 命令行客户端这里我们那可以看到导出的数据文件所存放的默认位置 C:\ProgramData\MySQL\MySQL …

qchart画完以后删除_冬天的夜晚很难画?老师分步骤教你画,简单易学,收藏起来临摹...

今日绘画主题&#xff1a;冬天的夜晚冬天是美好的&#xff0c;也是很多画家喜欢创作的题材之一&#xff0c;但是&#xff0c;冬天的夜晚却是很难画&#xff0c;今天分步骤图解教大家画冬天的夜晚&#xff0c;快收藏起来临摹吧。>>>【第一步】&#xff1a;先来画线稿&a…

lrtemplate如何导入pr_PR模板使用套路讲解 视频剪辑教程

​pr模板在使用的时候需要注意的事项以及如何正确操作https://www.zhihu.com/video/1237765482302226432pr模板在使用的时候需要【注意的事项】1、下载的模板必须解压后使用2、下载模板的时候网站上页面都会有介绍模版所支持的版本3、弹出不同版本的提示窗口&#xff0c;点击确…

linux没有usr目录_了解linux系统目录,sys,tmp,usr,var!

linux小白到大神的成长之路&#xff1a;了解linux系统目录&#xff0c;sys,tmp,usr,var&#xff01;本经验由宗龙龙原创,全文共600多字&#xff0c;阅读需要14分钟&#xff0c;如果文中存在错误&#xff0c;还请大家多多指点&#xff0c;我会积极改进的&#xff01;​这篇文章将…

svd奇异值分解_奇异值分解SVD

点击上方蓝字关注我们奇异值分解(SVD)在计算机视觉中有着广泛的应用&#xff0c;如数据降维、推荐系统、自然语言处理等。本文是介绍SVD的数学计算过程&#xff0c;并从SVD的性质说明其应用的原理。01特征值与特征向量奇异值分解(SVD)与特征分解类似&#xff0c;是将矩阵分解为…

python turtle画房子详细解释_[宜配屋]听图阁

我就废话不多说了&#xff0c;直接上代码吧&#xff01;import turtletturtle.Turtle()turtle.Turtle().screen.delay(0)tleftturtle.Turtle()#第一部分t.penup()t.goto(0,0)t.pendown()t.left(20)t.forward(110)t.left(25)t.forward(40)t.left(100)t.circle(180,20)t.right(12…

简易航空订票系统_四川航空APP全新升级改版,三大亮点提升订票体验

成都2015年10月23日电 /美通社/ -- 四川航空发布手机APP全新的3.0版本&#xff0c;不仅针对界面风格做了全新改变&#xff0c;在iOS9、安卓系统上的展示更加炫丽&#xff1b;而且在机票预订、航班动态、特价机票方面均做了大幅升级&#xff0c;会员服务也更加贴心。对于有机票需…

python可视化分析网易云音乐评论_网易云音乐热门评论api分析

网上有现成的例子我就扒过来了&#xff01;&#xff01;title: 网易云评论api分析date: 2018-12-24 20:54:46tags: [python]网易云音乐是个好地方&#xff0c;里面各个都是人才&#xff0c;特别是评论区……所以我就想把评论爬下来看看&#xff0c;下面记录一下分析api的过程与…

spring 上下文_一次性教你彻底理解 Spring容器和应用上下文!

作者&#xff1a;陈本布衣www.cnblogs.com/chenbenbuyi有了Spring之后&#xff0c;通过依赖注入的方式&#xff0c;我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程&#xff0c;走啊走啊&#xff0c;走到哪里&#xff0c;需要另外的对象来协助…

oracle plsql 到处dbf_plsql 导出oracle数据库

plsql 导出数据库有两个问题&#xff0c;一个是只导出结构&#xff0c;一个是导出表结构加数据这样的&#xff0c;首先人家让我导成sql语句这不是简单&#xff0c;首先打开PLSQL一、导出结构1、然后tools->Export User Objects..然后出来一片空白2、要选择哪个User3、上面会…

python爬取百度百科搜索结果_用Python抓取百度搜索结果,python,爬取,的

前言前几天爬的今天整理了一下发现就两个需要注意的点一是记得用带cookie的方式去访问&#xff0c;也就是实例化requests.session()二是转化一下爬取到的url&#xff0c;访问爬到的url得到返回的Location值&#xff0c;该值便是真实的地址(如果你不是要爬url当我没说)知道了这两…

spring aop设计模式_Spring框架中设计模式的运用

设计模式大家可能随口就能说出总共有23种&#xff0c;但是具体怎么用&#xff0c;或者在常用的组建中有哪些体现&#xff0c;这时候不一定说的上来了。接下来几篇文章&#xff0c;我们一起深入理解。首先我们一起了解下常用的组建中是怎么运用的&#xff0c;比如 JDK、Sring、M…

sql unicode转中文_SELECT语句《SQL必知必会》

数据库中有哪些数据类型&#xff1f;数据库中最常用对数据类型有三种&#xff1a;Text&#xff08;文本&#xff09;、Number&#xff08;数字&#xff09;和 Date/Time。文本类型&#xff1a;即字符串&#xff0c;如“nameasdas”数字类型&#xff1a;十进制数字&#xff0c;如…

graphpad如何检测方差齐_如何选择方差分析的多重比较方法?资料集锦

欢迎订阅SPSS训练营号方差分析时&#xff0c;如果因素主效应有显著影响&#xff0c;则需要对因素水平进行两两比较&#xff0c;以确认因素水平间的具体差异。这个过程也叫作多重比较。SPSS提供14种用于方差齐次的多重比较方法&#xff0c;还有4种方差不齐情况下的多重比较方法&…

【MySQL学习笔记009】事务

一、事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 二、事务操作 1、操作1 查看/设置事务提交方式 select a…

c mysql 视图_MySQL入门教程(七)之视图

相关阅读&#xff1a;视图是从一个或多个表中导出来的虚拟表。视图就像一个窗口&#xff0c;通过这个窗口可以看到系统专门提供的数据。1、视图简介1.1 视图的含义视图是从一个或多个表中导出来的虚拟表&#xff0c;还可以从已经存在的视图的基础上定义。数据库中只存放视图的定…

tensorflow gpu安装_tensorflow-gpu安装配置

1 介绍目前&#xff0c;主流版本是tensorflow-gpu 1.12.0&#xff0c;线上安装这个版本&#xff0c;和这个版本搭配的cuda是9.0版本&#xff0c;cudnn版本是7.0.5。2 cuda和cudnn安装cuda驱动地址&#xff1a;cuda_9.0.176_384.81_linux.runcudnn库地址: cudnn-9.0-linux-x64-v…

java ee文件下载_JavaEE实现文件下载

我们先来看一个最简单的文件下载的例子&#xff1a;package com.yyz.response;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.…