前台将数据存入集合并封装为JSON格式,后台用list遍历输入
来源:互联网 发布:win7开机时间优化 编辑:程序博客网 时间:2024/05/21 09:33
在开发项目时,在前台的数据获取时遇到了一个不大不小的问题。根据公司的业务需求,是要实现一个类似上级选中和下级选中要一一对应的一种效果。
就是如上的一种效果。起初打算用Map的键值对的操作实现,但发现这种方案在前台取值好获取,但后台用mybatis时foreach方法不好录入,比较麻烦后来请教了一些朋友之后,决定在前台取值用,将数据保存到数组中,然后封装为JSON类型,后台直接用List进行处理就可以了。很方便。
现将前后台代码摘录如下:
前台jsp代码:
<script>$(function(){//表单提交$("#commit").click(function(){var slist = new Array();//这是在前台创建一个数组类型$("span[name='space']").each(function(){/* alert("空间名称为\t"+$(this).text()); *///获取所有的空间编号var space_fit = {};//这里为创建实体类,必须是java对应存在的实体类,且有相应的属性。将这个实体类封装到数组中,然后转换为JSON格式的数据space_fit.cus_code=$("#cus_code").val();space_fit.addr_code=$("#addr_code").val();space_fit.space_name= $(this).text();var product = "";$("input[name='product,"+$(this).attr("id")+"']:checked").each(function(){/* alert("选中的部件信息为\t"+$(this).val()); */ //在空间的循环下获取部件[上一个this为空间,下一个this为部件,二者范围不同,不干扰]product += $(this).val()+",";})product = product.substring(0, product.length-1);space_fit.advice = product;slist.push(space_fit);})var fitList = JSON.stringify(slist); //此处为调用前台方法,将数组转换为JSON格式,方便传值和后台接收/* alert(fitList); return; */$.ajax({url:"MakeAdvisory_fit.action",type:"post",dataType:"json",data:{"fitList":fitList},success:function(data){if(data){alert("配置建议信息录入成功!");location.href="<%=request.getContextPath() %>/customer/toCustomer_addrZX.action?cus_code="+$("#cus_code").val()+"&cus_name="+encodeURI(encodeURI($("#cus_name").text()));}else{alert("填入信息有误,请重新核实");location.reload();}}})})//清空表单$("#clear").click(function(){$('#fit').form('clear');})//返回$("#back").click(function(){location.href="<%=request.getContextPath() %>/work/toWork.action?cus_code="+$("#cus_code").val();})})</script></head><body><div class="easyui-panel" title="适老化改造部品配置建议表测试表" style="width:100%;" ><form id="fit" method="post"><div style="margin-bottom:20px"><div>客户姓名:<input type="hidden" value="${bs.cus_code }" id="cus_code" name="cus_code"><span id="cus_name">${cus_name}</span></div></div><div style="margin-bottom:20px"><div>客户地址:<input type="hidden" value="${bs.addr_code }" id="addr_code" name="addr_code"><span id="address">${bs.address }</span></div></div><div style="margin-bottom:20px"><div>配置建议</div><c:forEach var="space" items="${sList }"><div style="margin-left: 50px"><span id="${space.space_id }" name="space">${space.space_name }</span></div><div style="margin-left: 100px"><c:forEach var="p" items="${pList }">${p.product_name }<input type="checkbox" value="${p.product_name }" name="product,${space.space_id}"></c:forEach></div></c:forEach></div><div style="margin-bottom:20px"><input type="button" value="保存" id="commit"><input type="button" value="返回" id="back"><input type="button" value="清空" id="clear"></div></form></div></body></html>
@RequestMapping("MakeAdvisory_fit")@ResponseBodypublic boolean MakeAdvisory_fit(String fitList){//后台直接用字符串类型接收即可ObjectMapper objectMapper = new ObjectMapper();JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Space_fit.class);List<Space_fit> list = null;try {list = objectMapper.readValue(fitList, javaType);//将传来的JSON数据转换为需要的集合数据int i = makeAdvisoryService.addFit(list);//传入后台时,只需要传入list集合即可if(i>0){return true;}else{return false;}} catch (IOException e) {e.printStackTrace();return false;}}java存储值的实体类:
public class Space_fit {private String cus_code;private String addr_code;private String space_name;private String advice;private String cus_name;private String address;//省略set/get方法}
mybatis将数据录入数据库中:
<insert id="addFit" parameterType="java.util.List">insert into space_advice (cus_code,addr_code,space_name,advice) values<foreach collection="list" item="fit" separator="," index="index"> (#{fit.cus_code},#{fit.addr_code},#{fit.space_name},#{fit.advice} )</foreach></insert>
在前台将数据封装进数组,后台用list处理。这种方法在我的那个项目中应用了很多次,也算是开阔的我的一种思路吧。今天将代码与解决方案分享处理,希望可以帮助到有类似困扰的朋友们,可以给一个解决思路。如果哪位朋友对类似问题有更好的解决办法,也请在博客下方留言,大家可以一起交流进步。
阅读全文
0 1
- 前台将数据存入集合并封装为JSON格式,后台用list遍历输入
- Jackson 后台将javabean对象、List转为json格式字符串并返回,同时前台解析
- 利用Struts2框架,将后台数据转化为JSON数据并返回到前台
- 后台将对象转换为json格式,前台js解析json数据,将字符串转化为数组
- 。net 后台将List数据转换为json后 前台js 调用
- 将list对象转化为json数据存入文档
- Json--后台将List集合转换成json数据
- Ajax将数据封装为JSON格式数据
- C#后台把多个字符串结果封装成JSON格式并返回前台解析
- 将后台List对象以Json格式返回到前台Ajax请求
- EXT中在前台使用ajax将后台model类封装为json格式传到前台,并且解析出model中属性
- 将后台数据传到前台JSON应用
- 动态grid java 后台封装json数据返回到前台解析并展示
- c#后台将数据转换为json字符串,前台ajax解析json字符串
- js前台传递json字符串数组到后台有后台转换成list集合或其他格式的问题解决
- SSM将后台获取的数据转换成json格式传递到前台页面
- Jquery 传json格式数据到后台,后台反序列化得到一个集合list
- 解决后台传输list到前台以json格式
- 接口的概念
- |poj 2299|权值线段树|Ultra-QuickSort
- eclipse创建maven项目
- 【网易云课堂】Java语言程序设计进阶----第一周编程作业
- 构造函数用于赋值
- 前台将数据存入集合并封装为JSON格式,后台用list遍历输入
- K近邻算法(kNN)学习——kd树
- leetcode 410. Split Array Largest Sum
- C++文件操作函数-读写文件
- android自动化测试工具【UiAutomator】——UiScrollable
- 使用外置安装的zookeeper后hbase出错;ERROR: The node /hbase is not in ZooKeeper
- 怎么样把网站内链优化与网站外链建设做好呢?
- Oracle 几种启动方式 & 查询启动状态
- Android 获取sd卡空间