数组赋值理解错误,造成数据错误
2016-07-03 14:50
260 查看
情景:需求导出数据。
具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。
实现方法:在查询时把生成查询条件放到session中,查询条件是个集合,在导出时获取session中的查询条件和选择的数据的id,生成新的查询条件。
问题:第一次导出时数据正确,第二次导出时获得的session中的查询条件为第一次时生成的查询条件,导致导出的结果为此次条件与上一次条件的并的结果
错误原因:数组的复制与赋值概念不清。以下为代码
正确代码:
错误代码:
具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。
实现方法:在查询时把生成查询条件放到session中,查询条件是个集合,在导出时获取session中的查询条件和选择的数据的id,生成新的查询条件。
问题:第一次导出时数据正确,第二次导出时获得的session中的查询条件为第一次时生成的查询条件,导致导出的结果为此次条件与上一次条件的并的结果
错误原因:数组的复制与赋值概念不清。以下为代码
正确代码:
List searchParams = (List)request.getSession().getAttribute("searchQuitAssetParamsList"); List paramsList = new ArrayList(); for(Object param : searchParams) { paramsList.add(param); } String ids = request.getParameter("ids"); if (ids != null && !"".equals(ids)) { ids = ids.substring(0, ids.length() - 1); paramsList.set(6, paramsList.get(6) + " and asset_id in (" + ids + ")"); } List list = assetQuitService.getAssetQuit(null, paramsList, null);
错误代码:
List paramsList = (List)request.getSession().getAttribute("searchQuitAssetParamsList");
for(Object param : searchParams) { paramsList.add(param); } String ids = request.getParameter("ids"); if (ids != null && !"".equals(ids)) { ids = ids.substring(0, ids.length() - 1); paramsList.set(6, paramsList.get(6) + " and asset_id in (" + ids + ")"); } List list = assetQuitService.getAssetQuit(null, paramsList, null);
相关文章推荐
- VS2015开发环境的安装和配置
- AngularJS浏览缩放图片
- POJ 3714 Raid
- 我的浏览器收藏夹清单,经常访问的网站(200多个)
- 我的浏览器收藏夹清单,经常访问的网站(200多个)
- 我的浏览器收藏夹清单,经常访问的网站(200多个)
- 关于JSON解析的深坑之BOM头
- CCNA+NP学习笔记—交换网络篇
- CCNA+NP学习笔记—交换网络篇
- Angularjs总结(四)$on、$emit和$broadcast的使用
- rabbitmq集群搭建(centos6.5)
- 7.3模拟比赛解题报告
- Activity启动方式的总结(1)
- 《iOS开发笔记—OC基础(一)》
- Spring MVC 拦截器使用及实现
- PHP自定义错误
- 分布式系统(二)——分布式集群计算平台
- Gradle介绍
- Angularjs总结(三)摸态框的使用
- MongoDB c++ driver(四)