您的位置:首页 > 其它

数组赋值理解错误,造成数据错误

2016-07-03 14:50 260 查看
情景:需求导出数据。

具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。

实现方法:在查询时把生成查询条件放到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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: