注解方式传递JSON,重复刷新action,JSONObject中list数据重复

本文介绍了一种在Spring中使用注解方式传递JSON数据时,遇到的JSON对象中List随页面刷新而重复累积的问题及其解决方案。通过将Bean的作用域设置为prototype,确保每次请求都能创建一个新的实例,从而避免数据重复累积。

问题:用注解方式传JSON数据,反复刷新action时,传回来的josnObject里的list对象随着你刷新的次数越来越大,越来越大,里面全是重复数据

解决方法:spring的bean里scope属性设置成scope="prototype"

原理,bean设置成scope="prototype",意思是访问一次生成一个新的action

package com.weaver.seconddev.rpdz.action; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.weaver.common.base.entity.result.WeaResult; import com.weaver.common.hrm.util.Util; import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface; import com.weaver.mc.util.StringUtils; import com.weaver.seconddev.rpdz.manage.esb.EsbPdhNumberManage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * @author SHIBIN * @version 1.0 * 测试完成 * @description: 发货计划申请节点后生成PDH号 - CRM-发货计划变更单 * @date 2025/6/23 20:45 */ @Slf4j @Service("CreatePDHNumberAction") public class CreatePDHNumberAction implements EsbServerlessRpcRemoteInterface { @Autowired private EsbPdhNumberManage esbPdhNumberManage; @Override public WeaResult<Map<String, Object>> execute(Map<String, Object> params) { JSONObject paramsJson = new JSONObject(params); log.info("params: {}", paramsJson.toString()); String detailId1 = Util.null2String(paramsJson.get("detail1")); // 所有数据 JSONObject data = paramsJson.getJSONObject("data"); // 明细表1数据 JSONArray detailData1 = data.getJSONArray(detailId1); // 明细表1 pdh号id String pdhId = Util.null2String(paramsJson.get("pdhDetailId1")); // requestid String requestId = paramsJson.getString("requestid"); // 明细表1表名 - 必须要有 detailTable1 String detailTable1 = Util.null2String(paramsJson.get("detail1Table")); try { log.info("CRM-发货计划变更单生成PDH号 requestId:" + requestId + "-start"); List<Map<String,String>> paramsList = new ArrayList<>(); for (Object o : detailData1) { JSONObject detailJSONObject1 = (JSONObject) o; String id = Util.null2String(detailJSONObject1.get("rowId")); String pdh = Util.null2String(detailJSONObject1.get(pdhId)); if (StringUtils.isNotBlank(pdh)){ // 已经存在pdh号就不更新 continue; } Map<String,String> paramMap = new HashMap<>(); paramMap.put("id",id); paramMap.put("key","pdh"); paramsList.add(paramMap); } return esbPdhNumberManage.getPdhNumber(detailTable1, paramsList); }catch (Exception e) { log.error("Exception e", e); return WeaResult.fail("OA接口报错,请联系系统管理员!" + e.getMessage()); } //return WeaResult.success(params); } } 给我分析一下这段代码,每一条的意思
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值