`

后台写法

XML 
阅读更多
    /**
     * 动态获取菜单信息
     * @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编程示例,旨在帮助学习者了解如何使用Java语言构建一个简单的通讯录应用。这个项目的核心是实现数据存储、查询和管理联系人的功能,对于理解面向对象编程(OOP...

    后台数据库简单写法

    实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。 实现本地简单保存读取文件功能。...

    网站后台模版大集合(一共有12个)

    网站后台模板是构建高效、美观且用户友好的网站管理界面的关键元素。本资源"网站后台模版大集合(一共有12个)"提供了一系列全面的后台设计模板,旨在帮助开发者快速搭建功能丰富的网站管理系统。这些模板通常包含了...

    C#后台分页及数据库脚本常用的几种分页写法

    ### C#后台分页及数据库脚本常用的几种分页写法 #### 分页技术概述 在Web开发中,为了提高用户体验以及服务器性能,通常会采用分页技术来展示大量数据。分页技术不仅可以减少单次请求的数据量,降低服务器压力,还...

    android 中Handler 的几种写法

    本文将详细介绍`Handler`的几种常见写法,以及如何使用`Handler.Callback`进行消息处理。 1. **基本Handler使用** 基本的`Handler`使用通常涉及到创建`Handler`对象,然后在后台线程中通过`Looper`和`Message`与之...

    javascript 注释的标准写法

    javascript和后台程序对比的缺点 1、不易读性; 2、不好调试性; ............ 有了以上特点,那么我们就要进行好的注释; javascript 注释的标准写法

    jsonp格式前端发送和后台接受写法的代码详解.docx

    后台接收示例(Python Django框架) ```python from django.shortcuts import render, HttpResponse def test(request): callback = request.GET.get('callback') print(dict(request.GET)) # 传过来的内容会被...

    小型服务器的服务器端的写法.pdf

    6:开启子线程,后台线程,线程的开启(监听) 7:定义bool值,while实现死循环,用来不断接收请求信息 8:调用socket的accept方法,返回的是客户端的连接套接字对象 socketClient 9:开启子线程,后台开启线程,传递...

    基于laravel+layui开发完整cms后台,系统主要是志在更快的开发后台,使用了模块化的开发模式.zip

    基于laravel+layui开发完整cms后台,系统主要是志在更快的开发后台,减少代码冗余,所以本cms基本大部分通过js渲染html,php代码均为模块化写法,使用了模块化的开发模式. 软件开发设计:PHP、应用软件开发、系统...

    一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化

    使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化使用服务器进行远程训练nohup指令和查看输出缺省输出文件的写法指定输出文件的写法和CUDA一起用实时查看out配合visdom使用 使用服务器进行远程训练 ...

    电商平台后台管理系统(vue项目)前后端不分离+独自写前后端

    技术选型 : node 后台 +vue 前端展示 +elementUI +mongoDB node +express 服务端 ,用户增删改查 1.node+express 服务器端 2.vue+axios +elementUI 前端展示 3.mongoDB 数据库 操作 4.MongoDB Compass 数据...

    kplphp后台极简快速框架

    基于最新版本的thinkphp6.0以上底层编写的一整套纯净版后台,Thinkphp6方便二次开发,您可以完全参考tp6写法。[官方域名正在建设中] 测试例子:http://139.9.38.224:6602 [主后台框架] , http://139.9.38.224:6603 ...

    真正国密SM2,SM3,SM4的前后台配套(js和java)加解密写法

    之前网上找的资源都有问题,主要是SM2 JS用公钥加密,Java后台用私钥解不了,前后台不匹配,现已解决,前后台代码都共享出来,弄了好久,希望大家贡献一点积分(其中sm2Test.html的js路径引入不太 正确,修改后即可...

    asp.net_echarts后台动态获取数据

    自己练手写的几个例子: demo1和demo2是echart两种不同的写法,数据是写死的,仅供参考,推荐以demo2为模板。 demo3、demo4、demo5是ajax动态从后台获取json数据的例子。 demo3是折线图和柱状图。 demo4是饼图。 ...

    jquery ui 后台界面演示系统 登陆界面

    4. 如果$tab中url指向的文件中需要包含表单,按常规写法即可,无需特殊代码即可自动以ajax方式递交 5. 如果表单需要ajax方式验证,可以给相应的表单项添加class,可参见systemsetting.php和address.php文件,也可自行...

    CX文章采集器规则写法

    后台设置 - **添加机器人**:在Discuz插件管理界面中找到CX采集器,添加一个新的采集任务。 - **基本设置**:设定机器人名称、匹配模式(推荐使用正则表达式)、采集总数及分批采集数量,合理规划采集策略。 - **...

    Android 8.0 Notification 写法Example

    对于长时间运行的服务,需要显示一个常驻通知,表示应用正在后台运行。这可以通过`startForeground()`方法实现,同时传递一个`Notification`实例: ```java startForeground(ONGOING_NOTIFICATION_ID, notification...

    ExtJS5-一个简洁完整的后台管理系统入门实例

    2、使用全新的MVVM模式架构,面向对象写法; 3、全系统只有一个index.html界面,登录框也封装成独立的视图组件; 4、通过实现角色管理、用户管理两个基础的功能模块,演示了Viewport、Container、Panel、TreePanel...

Global site tag (gtag.js) - Google Analytics