数组赋值理解错误,造成数据错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组赋值理解错误,造成数据错误相关的知识,希望对你有一定的参考价值。
情景:需求导出数据。
具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。
实现方法:在查询时把生成查询条件放到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);
以上是关于数组赋值理解错误,造成数据错误的主要内容,如果未能解决你的问题,请参考以下文章
[]map[string]struct 的 Golang 赋值错误
TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段