树形结构的jsp展现 (2)_jsp树形结构-程序员宅基地

1,在没有树形控件等的情况下,后台用sql查询出树形结构数据,前台直接根据标记遍历(其实属性控件也是如此)(用js直接遍历数据)

 

2,还有中方式后台根据父子关系组装成list,前台用jsp标签遍历父子

<div id="div1" style="width:100%;">

</div>

 

$(function(){

 

alert("2");

appendTable();

});

function appendTable() {

 

 

alert("11");

var roleId=$("input[name='roleId']").val();

var leave=$("input[name='leave']").val();

var pId=$("input[name='pId']").val();

var dataParent = {

roleId: roleId,

leave:leave,

pId:pId

 

   };

$.ajax({

        type: "post",

        url: "${pageContext.request.contextPath}/system/opmRole/Auths",

        data: dataParent,

        success: function (data) {

        if(data!=''&&data!=null){

        //alert(data);<table

        var div1=$("#div1");

        //var table1=$("#table1");

        var table1=$("<table></table>");

        var arr = eval(data);

        for(j=0;j<arr.length;j++){

        //alert(arr[j]);

        //alert(arr[j].leave);

        if(arr[j].leave=='1'){//包括两级文件夹

        var row =$("<tr></tr>");

        var td =$("<td></td>");

        td.append($(arr[j].str));

        row.append(td);

        table1.append(row);

        }

        var row2 ;

        if(arr[j].leave=='2'){//页面

        row2 =$("<tr></tr>");

       

        var td =$("<td></td>");

        td.append(arr[j].str);

        row2.append(td);

        table1.append(row2);

       

        }if(arr[j].leave=='3'){//按钮

        var td =$("<td></td>");

        td.append(arr[j].str);

       

        table1.find("tr:last").append(td);

        }

        //table1.append(row2);

        //var strq = JSON.stringify(table1);

        alert(strq);

        }

        div1.html(table1);

        //alert(table1);

        }else{

        alert("你输入的会员编号不存在!");

        }

       

        },

        error:function(data){

        alert("数据加载异常!");

       

        }

    }); 

 

 

}

 

 

//全选 选中多选框

function checkedAllBox(obj) {

if(obj.checked){

var a = document.getElementsByName(obj.value);

for (i = 0; i < a.length; i++) {

a[i].checked=true;

}

}else{

var a = document.getElementsByName(obj.value);

for (i = 0; i < a.length; i++) {

a[i].checked=false;

}

}

}

迭代的时候各个层次的数据过了方法就没有,不能共享,要实现类似共享累加:

1,返回值累加,用一个变量专门累加返回值

2,第二次回调前传入要共享的参数

@SuppressWarnings("rawtypes")

@RequestMapping(value="/system/opmRole/Auths")

@ResponseBody

public JSONArray treeRead(@RequestParam(value="leave") String leave,@RequestParam(value="roleId") String roleId,@RequestParam(value="pId")  String pId,@RequestParam(value="groupId",required=false)  String groupId1){

List<String> strl= new ArrayList<String>();

String str="";

JSONArray JsonArray = new JSONArray();

Map<String,Object> param = new HashMap<String,Object>();

param.put("pId", pId);

//OpmMenufolderTreeVo treeVos= new OpmMenufolderTreeVo();

List<Map> map= opmMenufolderService.getfordMenuLimt(param);

Map<String,Object> param1 = new HashMap<String,Object>();

String groupId=groupId1;

for(Map p: map){

 

//List<OpmMenufolderTreeVo> treechild= new ArrayList<OpmMenufolderTreeVo>();

//List<OpmMenuitemTreeVo> opmMenuitem= new ArrayList<OpmMenuitemTreeVo>();

param1.put("pId", p.get("ID"));

String l= (String) p.get("LEAVE");

if("1".equals(l)){

//str+=p.get("ID")+"="+p.get("NAME")+"\n";

if("100000".equals(p.get("PARENTID")+"")){

groupId=(String)p.get("ID");

//OpmMenufolderTreeVo treeVo= new OpmMenufolderTreeVo();

//treeVo.setId(p.get("ID")+"");

//treeVo.setName(p.get("NAME")+"");

//treeVo.setGroupIp(groupId);

//treechild.add(treeVo);

//treeVos.setChildForld(treechild);

   str+="<label style=\"float:left\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+" group="+groupId+" selectType=\"invert\" />"+p.get("NAME")+"</label>"+"\n";

   strl.add(str);

   JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str", "<label style=\"float:left\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+"  οnclick=\"checkedAllBox(this);\" group="+groupId+" //>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

   

   

}else{

//OpmMenuitemTreeVo treeVo= new OpmMenuitemTreeVo();

//treeVo.setId(p.get("ID")+"");

//treeVo.setName(p.get("NAME")+"");

//treeVo.setGroupIp(groupId);

//opmMenuitem.add(treeVo);

//treeVos.setOpmMenuitem(opmMenuitem);<input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId",groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str","<label>&nbsp;&nbsp;&nbsp;"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

}

}

if("2".equals(l)){

if(Integer.valueOf(leave)<0){

if(Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

//str+=p.get("ID")+"="+p.get("NAME")+"\n";

str+="<label><input type=\"checkbox\" value="+p.get("ID")+"  name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str","<label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

}

}else{

//TODO

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("ID"));

param2.put("menuItemLimitId", null);

param2.put("roleId", roleId);

param2.put("displayOrder", Integer.valueOf(-1));

List<OpmRolelimit> rl= opmRolelimitService.getRoleLimitByTJ(param2);

if(rl!=null&&rl.size()>0&&Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

//str+=p.get("ID")+"="+p.get("NAME")+"\n";

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str","<label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

}

}

}

if("3".equals(l)){

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("PARENTID"));

param2.put("menuItemLimitId", p.get("ID"));

param2.put("roleId", roleId);

param2.put("displayOrder", null);

List<OpmRolelimit> rl2= opmRolelimitService.getRoleLimitByTJ(param2);

String tempg=groupId;

if(rl2!=null&&rl2.size()>0){

//str+=p.get("ID")+"="+p.get("NAME")+"\n";

str+="<label><input type=\"checkbox\"  value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str","<label><input type=\"checkbox\"  value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

}

}

str+=treeRead(leave,roleId,p.get("ID")+"",groupId);

//strl.add(treeRead(param1,level,roleCurId,groupId));

JsonArray.addAll(treeRead(leave,roleId,p.get("ID")+"",groupId));

}

return JsonArray;

}

 

 

service:

@Override

public List<Map> getfordMenuLimt(Map<String,Object> param) {

// TODO Auto-generated method stub

List<Map> map = new ArrayList<>();

map= (List<Map>) opmMenufolderMapper.getfordMenuLimt(param);

return map;

}

 

map.java

public interface OpmMenufolderMapper extends Mapper<OpmMenufolder> {

 

List<?> getfordMenuLimt(Map<String,Object> param);

}

 

map.xml

 <resultMap id="BaseResultMap" type="com.esteel.system.bean.OpmMenufolder" >

    <!--

      WARNING - @mbggenerated

    -->

    <id column="ID" property="id" jdbcType="VARCHAR" />

    <result column="NAME" property="name" jdbcType="VARCHAR" />

    <result column="DISPLAYORDER" property="displayorder" jdbcType="DECIMAL" />

    <result column="PARENTID" property="parentid" jdbcType="VARCHAR" />

    <result column="URI" property="uri" jdbcType="VARCHAR" />

    <result column="DESCRIPTION" property="description" jdbcType="VARCHAR" />

    <result column="ICONCSS" property="iconcss" jdbcType="VARCHAR" />

    <result column="SUBSYSTEM" property="subsystem" jdbcType="VARCHAR" />

  </resultMap>

  

  <select id="getfordMenuLimt" resultType="map" parameterType="map">

    select * from (select * from 

(   

     select t.name name,t.id  id,t.parentid  parentid ,0 leave1,'1' leave from opm_menufolder t 

   union all select o.name name,o.id id,o.menufolderid,o.level1 leave1,'2' leave  from opm_menuitem o

   union all select l.name name,l.id id,l.menuitemid ,l.level1 leave1,'3' leave  from opm_menuitemlimit l

start with parentid is null connect by prior id=parentid ORDER SIBLINGS BY parentid) where parentid=#{pId}

  

  </select>

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/y666666y/article/details/70212283

智能推荐

linux 程序溢出,linux-溢出程序-程序员宅基地

文章浏览阅读197次。后门程序: 100描述米特尼克拿到了BAT数据中心的口令后,为了确保口令被更改后仍能登陆数据中心,他从一位小伙伴那拿到了一个后门程序植入进了服务器。这个后门程序没有任何说明,但是米特尼克迅速找到了使用方法。后门程序:http://bctf.cn/files/downloads/backdoor_844d899c6320ac74a471e3c0db5e902e 安装地址:218.2.197.250:..._fff308

开源语音识别软件有哪些?-程序员宅基地

文章浏览阅读403次。开源语音识别软件有很多种, 下面列举几种常见的:Kaldi: 是一种用于语音识别的开源工具包, 支持多种语言, 并且在处理大规模语料库方面有较好的表现.HTK: 是一个用于语音识别、语音合成和语音处理的开源工具包, 支持多种语言.Julius: 是一个用于语音识别的开源软件, 支持日语和英语.Sphinx: 是一个用于语音识别的开源工具包, 支持多种语言.CMUCLMTK: 是..._多说话人语音识别开源工具

Mac os下apache正常启动localhost无法访问服务器_mac apache启动但是访问不到-程序员宅基地

文章浏览阅读8.1k次,点赞3次,收藏2次。由于删除了/private/var/log下面的日志,导致重启电脑后apache无法正常工作。重启电脑后apache无法正常运行,访问localhost或127.0.0.1都会无法找到服务器。探索:问题出现后,由于$ sudo apachectl start不会报任何错,但是访问localhost或127.0.0.1始终失败。可能情况1: 没有监听_mac apache启动但是访问不到

java list(属性方法)_java list exists-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏17次。List的方法和属性 方法或属性 作用Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。Count 属性,用于获取数组中当前元素数量Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。Add( ) 在List中添加一个对象的公有方法AddRan_java list exists

Golang单元测试和压力测试-程序员宅基地

文章浏览阅读1k次,点赞22次,收藏23次。go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程类似,并不需要学习新的语法,规则和工具。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终可执行文件中。在*_test.go文件中有三种类型的函数,单元测试函数,基准测试函数和示例函数。

Python 的 Numpy 数值计算_numpy 数组中的值 分组计数-程序员宅基地

文章浏览阅读1k次,点赞4次,收藏5次。文章目录1. Numpy 介绍2. Numpy 数组2.1 介绍2.2 数组属性2.3 创建数组1. Numpy 介绍  Numpy(Numerical Python),是 Python 科学计算的基础包。Mumpy 主要提供了以下内容:快速高效的多维数组对象 ndarray。对数组执行元素级计算以及直接对数组执行科学计算的函数。线性代数、傅里叶变换及随机数生成的功能。将 C、C++..._numpy 数组中的值 分组计数

随便推点

数据结构学习笔记(全)_数据结构笔记整理-程序员宅基地

文章浏览阅读619次,点赞2次,收藏27次。若有两个孩子,其右孩子为q,则将左孩子的最右边结点p删除,并将p放在被删除的根节点的位置,如果被删除的p有左子树,则直接继承在p的位置。从图中的某个顶点V0出发,并在访问此顶点之后 依次访问V0的所有未被访问过的邻接点,之后按这 些顶点被访问的先后次序依次访问它们的邻接点,直 至图中所有和V0有路径相通的顶点都被访问到。先选择一个顶点(无要求),选择权值最短的边,将其与一个新的顶点连接,并将其看为一个新的整体,重复进行”选择权值最短的边,将其与一个新的顶点连接“的操作直至所有顶点相连。_数据结构笔记整理

[开发|C++] 在 Ubuntu20.04系统上编译gcc-4.9.4_ubuntu20.04 gcc9.4.0编译gcc4.9.2-程序员宅基地

文章浏览阅读566次,点赞11次,收藏9次。5. 报错信息如下。7. 报错信息如下。_ubuntu20.04 gcc9.4.0编译gcc4.9.2

3小时零基础入门微信小程序开发2024年最新版-程序员宅基地

文章浏览阅读964次,点赞27次,收藏25次。用大白话讲:变量就是一个装东西的盒子再通俗些讲:变量就是用于存放数据的容器,我们通过变量名获取对应的数据。如上图所示,我们的盒子(变量)可以装名字,布尔类型的true,还可以用来装数字。变量的本质:就是在程序的内存中申请一块用来存放数据的空间。对象只是一种特殊的数据。对象是一组无序的相关属性和方法组成。这里重点要记住属性和方法这两个新概念属性:事物的特征,对象里的属性就是用来表现该对象具备哪些特征方法:事物的行为,对象里方法就是用来表示该对象具备哪些行为。

Bellman-Ford算法详讲_bellmanford算法不能处理什么情况-程序员宅基地

文章浏览阅读272次。Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bellman, 动态规划的提出者)和小莱斯特•福特(Lester Ford)发明。适_bellmanford算法不能处理什么情况

中国人必须知道的76个常识_中国人必须知道的常识-程序员宅基地

文章浏览阅读501次。1.【十二生肖】子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戌狗、亥猪2.【十大名茶】西湖龙井(浙江杭州西湖区)、碧螺春(江苏吴县太湖的洞庭山碧螺峰)、信阳毛尖(河南信阳车云山)、君山银针(湖南岳阳君山)、六安瓜片(安徽六安和金寨两县的齐云山)、黄山毛峰(安徽歙县黄山)、祁门红茶(安徽祁门县)、都匀毛尖(贵州都匀县)、铁观音(福建安溪县)、武夷岩茶(福建崇安县)3.【四大名绣】苏绣(苏州)_中国人必须知道的常识

MFC C++打造文件资源管理器(树控件版)_mfc 资源管理器-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏23次。123_mfc 资源管理器

推荐文章

热门文章

相关标签