/**
* 动态获取菜单信息
* @param request
* @param response
* @return Map
*/
public Map getMenuInfo(HttpServletRequest request, HttpServletResponse response) {
MenuInfoVO obj = new MenuInfoVO();
obj.setMenuId("0");
MenuInfoVO menuInfoVO = (MenuInfoVO)menuInfoDao.selectTreeForMenuId(obj);//根据menuId查询
//使用Dom4j生成xml
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("GB2312");
Element root = document.addElement("tree");
root.addAttribute("id", "-1");
Document doc = createXMLMenuData(menuInfoVO, document, root);
String content = doc.asXML();
response.setContentType("text/xml; charset=GB2312");
try {
response.getWriter().write(content);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 递归生成xml
* @param menuInfoVO ,document ,root
* @param document
* @param root
* @return
*/
public Document createXMLMenuData(MenuInfoVO menuInfoVO, Document document, Element root) {
//判断是否是最后一个节点(代表电话号码字符串)
if(menuInfoVO.getMenuLevel()== 3) {
Element vaitem = root.addElement("item");
vaitem.addAttribute("text",menuInfoVO.getMenuName());
vaitem.addAttribute("id", menuInfoVO.getMenuId());
} else {
Element item = root.addElement("item");
item.addAttribute("text",menuInfoVO.getMenuName());
item.addAttribute("id", menuInfoVO.getMenuId());
List list = menuInfoDao.selectTreeForMenuParentId(menuInfoVO);//根据menuParentId查询
int num = list.size();
//判断 是否有子菜单
if(num > 0) {
for(int i = 0; i < num; i++) {
MenuInfoVO vo = (MenuInfoVO)list.get(i);
if("0".equals(vo.getParentId())) {
tempList.add(vo.getMenuId());
}
//展开子节点
if(tempList != null) {
if(tempList.contains(vo.getParentId())) {
item.addAttribute("open","1");
}
}
createXMLMenuData(vo, document, item); //递归
}
}
}
return document;
}
分享到:
相关推荐
【Java版通讯录后台代码】项目是一个初学者友好的Java编程示例,旨在帮助学习者了解如何使用Java语言构建一个简单的通讯录应用。这个项目的核心是实现数据存储、查询和管理联系人的功能,对于理解面向对象编程(OOP...
实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。...
网站后台模板是构建高效、美观且用户友好的网站管理界面的关键元素。本资源"网站后台模版大集合(一共有12个)"提供了一系列全面的后台设计模板,旨在帮助开发者快速搭建功能丰富的网站管理系统。这些模板通常包含了...
### C#后台分页及数据库脚本常用的几种分页写法 #### 分页技术概述 在Web开发中,为了提高用户体验以及服务器性能,通常会采用分页技术来展示大量数据。分页技术不仅可以减少单次请求的数据量,降低服务器压力,还...
本文将详细介绍`Handler`的几种常见写法,以及如何使用`Handler.Callback`进行消息处理。 1. **基本Handler使用** 基本的`Handler`使用通常涉及到创建`Handler`对象,然后在后台线程中通过`Looper`和`Message`与之...
javascript和后台程序对比的缺点 1、不易读性; 2、不好调试性; ............ 有了以上特点,那么我们就要进行好的注释; javascript 注释的标准写法
后台接收示例(Python Django框架) ```python from django.shortcuts import render, HttpResponse def test(request): callback = request.GET.get('callback') print(dict(request.GET)) # 传过来的内容会被...
6:开启子线程,后台线程,线程的开启(监听) 7:定义bool值,while实现死循环,用来不断接收请求信息 8:调用socket的accept方法,返回的是客户端的连接套接字对象 socketClient 9:开启子线程,后台开启线程,传递...
基于laravel+layui开发完整cms后台,系统主要是志在更快的开发后台,减少代码冗余,所以本cms基本大部分通过js渲染html,php代码均为模块化写法,使用了模块化的开发模式. 软件开发设计:PHP、应用软件开发、系统...
使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化使用服务器进行远程训练nohup指令和查看输出缺省输出文件的写法指定输出文件的写法和CUDA一起用实时查看out配合visdom使用 使用服务器进行远程训练 ...
技术选型 : node 后台 +vue 前端展示 +elementUI +mongoDB node +express 服务端 ,用户增删改查 1.node+express 服务器端 2.vue+axios +elementUI 前端展示 3.mongoDB 数据库 操作 4.MongoDB Compass 数据...
基于最新版本的thinkphp6.0以上底层编写的一整套纯净版后台,Thinkphp6方便二次开发,您可以完全参考tp6写法。[官方域名正在建设中] 测试例子:http://139.9.38.224:6602 [主后台框架] , http://139.9.38.224:6603 ...
之前网上找的资源都有问题,主要是SM2 JS用公钥加密,Java后台用私钥解不了,前后台不匹配,现已解决,前后台代码都共享出来,弄了好久,希望大家贡献一点积分(其中sm2Test.html的js路径引入不太 正确,修改后即可...
自己练手写的几个例子: demo1和demo2是echart两种不同的写法,数据是写死的,仅供参考,推荐以demo2为模板。 demo3、demo4、demo5是ajax动态从后台获取json数据的例子。 demo3是折线图和柱状图。 demo4是饼图。 ...
4. 如果$tab中url指向的文件中需要包含表单,按常规写法即可,无需特殊代码即可自动以ajax方式递交 5. 如果表单需要ajax方式验证,可以给相应的表单项添加class,可参见systemsetting.php和address.php文件,也可自行...
后台设置 - **添加机器人**:在Discuz插件管理界面中找到CX采集器,添加一个新的采集任务。 - **基本设置**:设定机器人名称、匹配模式(推荐使用正则表达式)、采集总数及分批采集数量,合理规划采集策略。 - **...
对于长时间运行的服务,需要显示一个常驻通知,表示应用正在后台运行。这可以通过`startForeground()`方法实现,同时传递一个`Notification`实例: ```java startForeground(ONGOING_NOTIFICATION_ID, notification...
2、使用全新的MVVM模式架构,面向对象写法; 3、全系统只有一个index.html界面,登录框也封装成独立的视图组件; 4、通过实现角色管理、用户管理两个基础的功能模块,演示了Viewport、Container、Panel、TreePanel...