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

情景:需求导出数据。

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

实现方法:在查询时把生成查询条件放到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

数组赋值理解错误,造成数据错误的相关文章

1112. 寻找数据错误

1112. 寻找数据错误 中文English 集合S中原本包含数字1到n.但不幸的是,由于数据错误集合中的一个数变成了集合中的另一个数,这导致集合中有两个重复的数,并且集合中缺失了1到n的某个数. 给定数组nums,表示发生错误后的数组,以数组的形式返回重复的数值和缺失的数值. 样例 样例 1: 输入: nums = [1,2,2,4] 输出: [2,3] 解释: 2是重复的数,3是缺失的数. 样例 2: 输入: nums = [1,3,3,4] 输出: [3,2] 解释: 3是重复的数,2是缺

由于改 UOM conversion 导致库存数量和财务上的数据错误

轻易改变 UOM conversion 会导致库存数量混乱, 也会造成财务上的数据错误. 我们这里做一个 case 来具体分析一下. 1. 开始 Carton 和 Each 的比例是 1 : 1. 2. 我们创建一个PO, ship to W1, 是一个WMS Org. Item 是 lot control 的. UOM 使用 Carton, 不用这个 item 的 Primary UOM. 这里我们注意单价是15,  因为在定义 item 的时候, 1 个 Each 单价是15, 再根据单位转

为什么为 const 变量重新赋值不是个静态错误

const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assignment to constant variable. 注:本文不会使用“常量”这个术语,因为我觉的这个术语容易有歧义:有些人把数字.字符串等这些不可改变的字面量称为常量,也有人把一些只读属性称为常量,比如 Math.PI,还有人把 ES6 里用 const 声明的变量称为常量.不过一般来说,这点歧

使用独立模式安装Sharepoint Server 2013出现创建示例数据错误的解决方案

使用独立模式安装Sharepoint Server 2013,允许配置向导到第8步创建示例数据时,出错了! Exception: System.ArgumentException: The SDDL string contains an invalid sid or a sid that cannot be translated.Parameter name: sddlForm 解决办法: 1.用本机管理员帐号登录.2.为搜索服务创建一个新账户,如SearchSvc.3.把这个账户添加到本地的W

MySQL5中大数据错误:Packet for query is too large (****** > ******). You can change this value on the server by setting the max_allowed_packet' variable.;

使用的MySQL数据库版本:5.5 插入或更新字段有大数据时(大于1M),会出现如下错误: ### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1132484 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable. ; SQL []; Packet fo

李维对VCL理解的几个错误

研读深入浅出VCL一书的时候,有不少地方被网友提出疑问,而且似乎是网友们正确.但这丝毫不动摇李维在大中华Delphi界的江湖地位,因为高手应该是对整个系统理解的高手,而不是对某一个疑问的高手.能花巨量心思与精力写出如此巨著已经很不可思议,更不用说他还写了许多其它书籍.做了许多其它事情. 我自己也算仔细研读了一遍VCL,对照李维的巨著学习之外,仍有自己的不少心得,我也会慢慢写在这里,一个世界级的Windows平台编程基础库,实在是太难太庞大了,以至于李维也无法面面俱到.但是有一点对Delphi的哲

I盘提示数据错误循环冗余检查数据怎么恢复

移动硬盘打不开数据错误循环冗余检查,是因为这个I盘的文件系统内部结构损坏导致的.要恢复里面的数据就必须要注意,这个盘不能格式化,否则数据会进一步损坏.具体的恢复方法看正文 工具/软件:流星数据恢复软件 步骤1:先百度搜索并下载程序打开后,直接双击需要恢复的分区,接着解压再右击软件图标选择<以管理员身份运行>软件 步骤2:软件打开后,直接双击需要恢复的分区 步骤3:软件找出数据后,会放到与要恢复盘卷标名相同的目录中 步骤4:将需要恢复的文件勾选,右击选择<复制勾选的文件>,程序会将勾

移动磁盘显示数据错误循环冗余检查数据怎样恢复

数据错误循环冗余检查说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件:AuroraDataRecovery 步骤1:先百度搜索并下载软件运行后,直接双击需要恢复的分区,接着解压再右击软件图标选择<以管理员身份运行>软件(如果是xp系统可以直接双击打开软件) 步骤2:程序打开后,直接双击需要恢复的分区 步骤3:程序会很快将扫描到的文件,放到与

无法访问硬盘提示数据错误循环冗余检查的数据找到法子

硬盘打不开数据错误循环冗余检查,是因为这个I盘的文件系统内部结构损坏导致的.要恢复里面的数据就必须要注意,这个盘不能格式化,否则数据会进一步损坏.具体的恢复方法看正文 工具/软件:星空数据恢复软件 步骤1:先百度搜索并下载软件运行后,直接双击需要恢复的分区,接着解压再右击软件图标选择<以管理员身份运行>软件(如果是xp系统可以直接双击打开软件)步骤2:软件运行后,直接双击需要恢复的分区步骤3:软件会很快将找到的文件,放到与要恢复盘卷标名相同的目录中步骤4:打钩所有需要恢复的资料,然后点右上角的