如何动态的制作级联菜单(下)

这里写图片描述

上一期给大家介绍了如何编写一个动态级联的下拉框组,这一期为大家简述如何将下拉框组中的数据存储到数据库中。
其实这个问题的关键点在于信息数量的不确定,以及如何获取这些数据。如下图:
这里写图片描述
父选项框组的数量是确定的,而子选项框组中的数据则是可以通过新增按钮和删除按钮进行增删的,父选项框组和子选项框组的对应关系是一对多的。解决这样的问题无非两种思路,其一是把一化为多,另一种是把多化为一。为了数据存入数据库后再次读取的方便,我们选择将多组子选项框中的数据化为一组自选项框数据。

前面有说到问题的难点在于获取子选项框组的数量,即为子选项框组的行数。此处我用的方法是在前端代码中直接获取行数,并将其传值至controller中。方法如下:

1、首先,

var testItemProcessA = $("#testItemTbody");
var rows = testItemProcessA.find("tr").length;

其中testItemTbody为子选项框所在的tbody,通过获取tbody,找到其中tr的数量,即为子选项框的行数。

2、其次,<input type='hidden' name='itemRows' value=rows >
通过隐藏输入域进行传值,在界面中不会显示该输入域,但是的确存在,这样在controller中可以通过request.getParameterValues()的方法获取每一次新增项目的子选项框组的行数构成的数组。

获取到了自选项框组的行数后,重点转移到了如何将多组数据化为一组数据进行存储,此处使用数组和for循环便可以实现。

int itemCount = testItem.length;//新增项目数目
String[] itemRows = request.getParameterValues("itemRows");//每组项目中子选项组数
String[] testItem = request.getParameterValues("testItem");//父选项框
String[] itemParam = request.getParameterValues("itemParam");//子选项框1
String[] itemStandard = request.getParameterValues("itemStandard");//子选项框2
String[] judgement = request.getParameterValues("judgement");//子输入域
//用于存储每组项目整合后对应子选项框的数据
String[] itemParamA = new String[itemCount];
String[] itemStandardA = new String[itemCount];
String[] judgementA = new String[itemCount];
if(testItem!=null){
   int currentIndex = 0;//代表未整合的数据中当前读取数据的行数
   for (int i=0; i<testItem.length; i++){
      itemParamA[i] = itemParam[currentIndex];
      itemStandardA[i] = itemStandard[currentIndex];
      judgementA[i] = judgement[currentIndex];
      int rows = Integer.parseInt(itemRows[i]);
      for (int j=1; j<rows; j++){
         itemParamA[i] += "," + itemParam[currentIndex+j];
         itemStandardA[i] += "," + itemStandard[currentIndex+j];
         judgementA[i] += "," + judgement[currentIndex+j];
      }
      currentIndex = currentIndex + rows;
   }
}

欢迎关注JavaTree一起探讨学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值