情景:需求导出数据。
具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。
实现方法:在查询时把生成查询条件放到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);
时间: 2024-10-28 21:03:31