`
y806839048
  • 浏览: 1119094 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

树形结构数据的提交

 
阅读更多

树形结构数据提交问题

(1)标记,关联工作在jsp中进行

基于树形结构提交数据的复杂关联问题一个控件的name,value无法包含所有关联信息,自身信息,故用隐藏域,

由于隐藏域是统统提交,所以用隐藏域value作为key,能获取被选中值的就是被选中了,

所以组织隐藏域和选择框数据的时候按照key-value-key-value(中间的key-value相同)

所有看有没有被选中的关键就在隐藏域提交所有的,通过request获取隐藏域作为值的value,能获取到的说明是选中的

组装时

1,只要按钮能get(K)到的就把当前遍历的menuId作为menuId,当前按钮value中带的部分信息作为value

2,没有按钮但是通过get(K)=1的说明是单个被选中页面

 

(2)直接就提交选中值,至于关联关系放到后台(查数据库)(这样对于树形结构的渲染(数据值的组织也简单))

 

1,提交的值父节点不是100000(排除文件夹)

2,提交的节点在menu表中找到(页面被选中)

3,提交的节点在menuLIst按钮表中被找到(按钮被选中)

 即:A:遍历的是按钮被选中,把这个按钮的页面id同时查出(数据录增加菜单可以不用多查)(只管按钮)

 B:遍历的是页面被选中(只管页面)

   

   为了减少遍历数据库,可以在之中标记是哪级(页面,按钮,value=“100000;1”)或者在按钮级别标记其父(value=("100000;110000"))检测有;就是按钮级别,

   没有;就是页面

先以所有的最外层作为key(遍历数据库现有的最外层),获取所有被选中的值,再像上面处理

request.getParameter(“外层Key”)

 

我这里只有页面和按钮有name

 

///////用$("<table></table>")这种方式根方便动态构建树。

树形结构选择中jsp提交数据,用的一个特性:同名的input(等一切域值,各种控件的)提交到后台会是一个用“,”隔开的字符串,

这种同名的域需要承接逗号分隔的值1,用模型驱动中的属性(可以是string,string[]),2,属性驱动(可以是String,String[]),3,如果用String[] a=request.getParameterValues("subsystem");

要有这种否则,用getparamet()只会是一个

 比如下面示例:我这里只有页面和按钮有name(同一个大类的页面,按钮的name一样)

 字符串初始化String[] a=new String[]{};

其他:

按装的第三方软件访问直接用ip+该软件的端口

 

通用mapper的插入操作自动是返回id的

opmRoleMapper.insert(role);

OpmRolelimit roleLimt1 = new OpmRolelimit();

roleLimt1.setRoleid(role.getId());

 

//@control层调用@service中的方法时不能传入request参数,否则调用不到(ServletReques也不行)

 

int updateRole(String organid,OpmRolelimit opmLimt,HttpServletRequest request) throws Exception;

 

 

类似角色权限这样第三方的维护应是先根据角色Id删除,然后根据角色id增加

 

示例:

 

jsp:================

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<%@ include file="../common/include.inc.jsp"%>

<c:import url="../common/pagerForm.jsp"></c:import> 

 

<div class="pageContent">

<form method="post" action="<c:url value='/system/opmRole/update'/>" class="pageForm required-validate" onsubmit="return validateCallback(this,navTabAjaxDone);">

<input type="hidden" name="id" value="${vo.id}"/>

<input type="hidden" name="inUrl" value="${inUrl}"/>

<input type="hidden" name="roleId" value="${roleId}"/>

<input type="hidden" name="leave" value="${leave}"/>

<input type="hidden" name="pId" value="100000"/>

<input type="hidden" name="organid" value="${organid}"/>

<input type="hidden" name="pId1" value="100000"/>

<input type="hidden" name="pId1" value="110000"/>

<div class="pageFormContent" layoutH="57">

 <fieldset>

     <dl style="width: 23%">

       <dt>所属市场:</dt>

       <dd>${organName}</dd>

     </dl>

     <dl style="width: 33%">

       <dt>名称:</dt>

       <dd><input type="text" name="name" value="${vo.name}" class="required alphanumeric"  maxlength="16"/></dd>

     </dl>

     <dl style="width: 44%">

       <dt style="width: 14%">描述:</dt>

       <dd style="width: 84%"><input type="text" name="memo" value="${vo.memo}"   maxlength="100"/>最多100个汉字</dd>

     </dl>

   </fieldset>

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

</div>

</div>

<div class="formBar">

<ul>

<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>

<li><div class="button"><div class="buttonContent"><button type="button" class="reset">重置11</button></div></div></li>

<li><div class="button"><div class="buttonContent"><button type="button" class="close">关闭11</button></div></div></li>

<li><div class="button"><div class="buttonContent"><button type="button" onclick="appendTable();">test</button></div></div></li>

</ul>

</div>

    </form>

</div>

 

 

 

 

<script type="text/javascript">

 

 

 

$(function(){

appendTable();

});

function appendTable() {

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){

        var div1=$("#div1");

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

        var arr = eval(data);

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

        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);

        }

        }

        div1.html(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;

}

}

}

</script>

 

 

@control:================================

 

@SuppressWarnings("unused")

@RequestMapping(value = "/system/opmRole/update", method = RequestMethod.POST)

public ModelAndView opmUpdate(OpmRole opmRole,HttpServletRequest request,Model modle) throws Exception {

int flag=0;

OpmMenufolder folder = new OpmMenufolder();

folder.setParentid("100000");

List<OpmMenufolder> opmMenufolders= opmMenufolderService.getOpmMenufolder(folder);

String[] a=new String[]{};

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

try{

for(OpmMenufolder o: opmMenufolders){

a=request.getParameterValues(o.getId());

if(a==null||"".equals(a)){

continue;

}

list.addAll(Arrays.asList(a));

}

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

OpmRolelimit opmLimt = new OpmRolelimit();

String org= opmRole.getOrganid();

flag = opmRoleService.updateRole(opmRole, list);

//

 

return ajaxDoneOpm("/commonuntil/ajaxDone",200,"操作成功!","opmRoleNavUi","/system/opmRole/editUi","closeCurrent");

}catch (Exception e){

return ajaxDoneOpm("/commonuntil/ajaxDone",300,"添加失败!","opmRoleNavUi","/system/opmRole/editUi","closeCurrent");

//throw new Exception("操作失败!");

}

 

 

}

 

 

 

@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);

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

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

String groupId=groupId1;

for(Map p: map){

 

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

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

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

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

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

   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;width:150px;\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+"  onclick=\"checkedAllBox(this);\" group="+groupId+" //>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

   

   

}else{

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 style=\"width:150px;\">&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+="<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 style=\"width:150px;\">&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+="<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 style=\"width:150px;\">&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+="<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 style=\"width:150px;\"><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);

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

}

return JsonArray;

}

 

 

 

@service:=========================================

 

@Override

@Transactional(rollbackFor=Exception.class)

public int updateRole(OpmRole opmRole,List<String> list) throws Exception {

// TODO Auto-generated method stub

System.out.println("==========================213213213===================");

if("".equals(opmRole.getOrganid())||null==opmRole.getOrganid()){

throw new Exception("传入参数为空!");

}

TbCusMark tbCusMark = new TbCusMark();

   tbCusMark.setMarketKey(BigDecimal.valueOf(Long.valueOf(opmRole.getOrganid())));

   TbCusMark mark= tbCusMarkMapper.selectOne(tbCusMark);

   if(mark==null){

   throw new Exception("交易市场找不到!");

   }

OpmRole role =new OpmRole();

if(opmRole.getId()==null||"".equals(opmRole.getId())){

role.setOrganid(opmRole.getOrganid());

role.setLevel1(Short.valueOf("0"));

role.setName(opmRole.getName());

role.setMemo(opmRole.getMemo());

opmRoleMapper.insert(role);

}else{

OpmRolelimit opmRolelimit = new OpmRolelimit();

opmRolelimit.setRoleid(opmRole.getId());

   opmRolelimitMapper.deletRoleLimts(opmRolelimit);

}

OpmMenuitemlimit opmMenuitemlimit = new OpmMenuitemlimit();

List<OpmMenuitemlimit> opmLimits= opmMenuitemlimitMapper.select(opmMenuitemlimit);

OpmMenuitem item = new OpmMenuitem();

List<OpmMenuitem> items= opmMenuitemMapper.select(item);

try{

 

for(String l :list){

OpmRolelimit opmLimt = new OpmRolelimit();

int up=0;

for(OpmMenuitem i: items){

if(i.getId().equals(l)){

opmLimt.setMenuitemid(i.getId());

opmLimt.setDisplayorder(-1L);

opmLimt.setName("查看");

 

if(opmRole.getId()==null||"".equals(opmRole.getId())){

   opmLimt.setRoleid(role.getId());

   up= opmRolelimitMapper.insert(opmLimt);

}else{

opmLimt.setRoleid(opmRole.getId());

   up= opmRolelimitMapper.insert(opmLimt);

}

break;

}

}

if(up==0){

for(OpmMenuitemlimit lm : opmLimits){

if(lm.getId().equals(l)){

opmLimt.setMenuitemid(lm.getMenuitemid());

opmLimt.setDisplayorder(lm.getDisplayorder());

opmLimt.setName(lm.getName());

opmLimt.setMenuitemlimitid(lm.getId());

opmLimt.setDisplayorder(lm.getDisplayorder());

opmLimt.setName(lm.getName());

String org= opmRole.getOrganid();

                         if(opmRole.getId()==null||"".equals(opmRole.getId())){

                        opmLimt.setRoleid(role.getId());

  up= opmRolelimitMapper.insert(opmLimt);

}else{

opmLimt.setRoleid(opmRole.getId());

   opmRolelimitMapper.insert(opmLimt);

}

break;

}

 }

}

}

}catch(Exception e){

 

throw new Exception("保存角色异常!");

}

return  1;

}

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Ajax构造树形结构

    在本文中,我们将深入探讨如何使用Ajax构建一个树形结构,这是一个常见的前端数据展示方式,尤其适用于层级关系的数据,如组织结构、目录树等。 首先,树形结构是一种数据表示形式,它通过节点之间的层次关系来组织...

    基于layui实现树形穿梭框

    - 加载数据:使用layui的API加载树形结构的数据,通常是从服务器获取JSON格式的数据,然后调用`layui.tree`方法生成树形结构。 - 绑定事件:监听用户的点击操作,通过`layui.form.on('select')`方法捕获选择变化,...

    基于layui实现带搜索功能的树形穿梭框

    树形结构是一种数据组织形式,通过节点间的层级关系来表示数据。在本项目中,树形结构用于展现具有层级关系的数据,如部门、地区、产品类别等。用户可以展开和折叠节点,查看和选择不同级别的条目。 3. 搜索功能:...

    JSP动态树形结构、增删改查刷新功能(sql脚本)

    本项目以"JSP动态树形结构、增删改查刷新功能(sql脚本)"为主题,结合DTree组件,构建了一个具有动态树形展示、数据增删改查以及自动刷新功能的系统。以下是这个项目中的关键知识点和相关技术的详细介绍: 1. **JSP...

    树形目录的递归实现数据库

    这样的设计使得每个节点都可以通过其 `parentid` 字段关联到父节点,从而构建出一个完整的树形结构。 #### JSP 页面与 JavaBean 的交互 在 JSP 页面中,通过调用 JavaBean 来操作数据库。具体实现步骤如下: 1. *...

    作业3 树形结构及其应用1

    在本作业中,你将深入理解并实践树形结构,特别是二叉树的相关知识,包括它们的存储结构、遍历算法以及特殊性质的检测。以下是关于这些知识点的详细说明: 一、二叉树的存储结构 二叉树是一种特殊的树形数据结构,...

    Miniui树形和验证

    树形结构常用于展示具有层级关系的数据,例如组织架构、文件目录等。MiniUI提供了强大的树形组件,支持节点的动态加载、展开与折叠、节点操作(如添加、删除、编辑)以及异步数据获取。通过JSON格式的数据源,我们...

    bootstrap风格的zTree树形菜单代码.zip

    zTree是一款轻量级的JavaScript组件,它能够帮助开发者快速构建出功能丰富的树形结构,适用于网站导航、组织架构展示、文件管理等多种场景。在Bootstrap框架的加持下,zTree的外观和交互体验得到了显著提升,更加...

    ztree树形控件实例

    zTree是一款轻量级的JavaScript库,其主要功能是生成和管理树形结构,支持多种操作,包括展开/折叠节点、添加/删除节点、编辑节点文本等。zTree的灵活性和可定制性让它在各种项目中都得到了广泛应用。它的核心优势...

    作业3-树形结构及其应用1

    在IT领域,树形结构是一种重要的数据结构,广泛应用于计算机科学和软件工程中。本作业主要涉及二叉树的二叉链表存储、遍历算法以及相关应用。下面将详细阐述这些知识点。 首先,二叉树是一种特殊的树,每个节点最多...

    ajax 树形菜单无限极

    6. **DOM操作**:使用JavaScript动态创建和修改DOM元素,将接收到的JSON数据转化为可视化的树形结构。这可能涉及到元素的插入、删除和更新。 7. **性能优化**:对于大规模的数据,要考虑到性能优化,如延迟加载(懒...

    asp.net 树形下拉框

    // 调用服务端方法获取数据并生成树形结构 $.ajax({ url: 'GetTreeViewData', type: 'POST', dataType: 'json', success: function (data) { // 生成树形结构的代码 } }); }); }); ``` 3. **服务器端代码...

    树形的复选框,修改后随意做成别的样式的树结构

    在IT领域,尤其是在前端开发中,"树形的复选框"是一种常见的用户界面元素,它结合了树状数据结构和复选框的功能,让用户能够对分层数据进行选择和操作。这种设计允许用户逐级展开节点,查看并选择各个层次的选项。...

    实验2-树形结构及其应用1

    它基于一种特殊的二叉树结构——哈夫曼树(Huffman Tree),也被称为最优二叉树或最小带权路径长度树。在这个实验中,我们需要实现哈夫曼编码的全过程,包括字符频率统计、哈夫曼树构建、编码、解码以及压缩率计算。...

    浙大数据结构代码

    5. **树**:树形结构包括二叉树、二叉搜索树、平衡树(如AVL树和红黑树)等,它们在数据索引、文件系统等方面有广泛应用。 6. **图**:图由顶点和边构成,用于表示对象之间的关系,如网络路由、社交网络等。图的...

    ztree树形菜单

    - **根节点(Root Node)**:树形结构的起始点,没有父节点。 - **父节点(Parent Node)**:拥有子节点的节点。 - **子节点(Child Node)**:属于某个父节点的节点,可以有多个。 - **叶子节点(Leaf Node)**...

    ASP制作的树形菜单

    这些数据将被转换成HTML,以便浏览器能够理解并渲染成树形结构。ASP中可以使用VBScript或JScript作为脚本语言,这里我们假设使用JScript,因为它与JavaScript语法相近。 在ASP页面中,我们可以使用内置的对象如...

    树形控件和jquery上传附件

    数据库脚本用于创建、修改或删除数据库表结构,以便存储和管理树形结构的数据。JDBC(Java Database Connectivity)是Java平台的标准接口,用于连接Java应用程序和各种数据库。在树形控件的实现中,你可以编写JDBC类...

    数据结构试验指导书

    本指导书将引导学生进行一系列的数据结构实验,涵盖线性结构、树形结构、图结构以及查找排序等核心内容。 实验要求 1. **理解并掌握**:每个实验都要求学生理解相关数据结构的工作原理和操作方法。 2. **实现代码*...

    数据结构课程设计小组报告

    在设计内容和要求方面,每个小组需要完成树形结构的设计,并提交一份全面的报告,涵盖课题的各个方面,如设计目的、内容、需求分析、概要设计、代码实现、测试结果、创新点以及个人体会。此外,每个成员还需提交个人...

Global site tag (gtag.js) - Google Analytics