• 数组传回后端总显示为空怎么解决


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 竹一一 2024-04-22 15:00 采纳率: 15.4% 浏览 0 首页/ 前端 / 数组传回后端总显示为空怎么解决 vue.js前端list Vue前端传回一个数据模型 里面包含两个数组List,后端ApplyReport类有两个List成员变量,用于接收前端发送的List数据,前端控制台输出确定有数据,为什么每次都会报错说后端的list为空? 前端的函数 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    4条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-22 15:00
      关注

      引自免费微信小程序:皆我百晓生

      看起来你正在尝试在 Vue.js 应用程序中将数据传递给后端 API,但遇到了问题。根据错误信息,getMedicantList() 方法返回的是 null 或者是未定义,导致无法调用其 size() 方法。这通常意味着从前端传递的数据没有正确地被后端接收到。

      首先,确保你在 Vue.js 中创建的数据模型(对象)已经包含了你需要传递的所有数据,并且这些数据在发送之前已经被填充了正确的值。检查一下 applyReport.value 是否在发送前就已经包含了完整的 medicantList 和 equipmentList 数据。

      // 检查 applyReport.value 的内容
      console.log(applyReport.value);
      

      然后,在发送请求时,确保数据是以合适的形式传递给后端。在你的例子中,你使用了 request.get(),这通常是用来发送 GET 请求的,而 GET 请求一般不会携带请求体(payload)。对于更新操作,你应该使用 POST、PUT 或 PATCH 请求,它们可以携带请求体。所以,应该修改为 request.post()request.put()

      // 修改为 POST 请求
      export const ApplyService = (applyData) => {
        return request.post('/apply', applyData);
      };
      

      接下来,检查你的后端代码,确保你正确处理了接收到的数据。在 Java 中,如果你使用 Spring Boot,你应该在控制器方法上使用 @RequestBody 注解来自动绑定 JSON 转换后的对象到参数。

      // 假设 ApplyReport 是你的 POJO 类
      @PostMapping("/apply")
      public ResponseEntity saveApply(@RequestBody ApplyReport applyReport) {
          // 这里应该是你的业务逻辑,例如保存数据到数据库等
          // ...
      }
      

      这样,Spring Boot 将会自动将请求体中的 JSON 数据转换为你指定类型的对象(ApplyReport),并将其作为参数传递给方法。

      如果以上步骤都正确执行,那么问题可能出在数据序列化和反序列化的过程中。确保你的前端发送的是 JSON 格式的数据,而后端也期望接收到 JSON 格式的数据。

      为了更具体地分析问题,你需要查看网络面板(开发者工具 -> Network 部分)中发送的请求,确认数据是否已正确附带在请求体中。同时,你也应该检查后端日志,看是否有关于请求处理的更多细节。如果问题仍然存在,请提供更详细的后端代码和错误日志,以便更好地协助你解决问题。

      展开全部

      评论 编辑记录
    • 阿里嘎多学长 2024-04-22 15:00
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      【图片内容】

      1. 第一张图片显示了 applyReport 函数的声明,其中包含两个数组 medicantListequipmentList
      2. 第二张图片展示了 apply 异步函数,它调用了 ApplyService 并处理了返回的结果。
      3. 第三张图片定义了 ApplyService 函数,它使用 request.get 方法向服务器的 /apply 路径发送请求。

      【问题概括】 问题是前端在 Vue 应用中通过 applyReport 函数向后端发送包含两个数组 medicantListequipmentList 的数据模型,但是后端总是报告说接收到的列表为空。

      【问题出现原因】

      1. 可能 applyReport 函数中的 medicantListequipmentList 并没有正确地将数据传递给 apply 函数。
      2. apply 函数中的 ApplyService 调用可能没有正确地将数据传递给后端。
      3. 后端的 ApplyReport 类可能没有正确地解析或接收前端发送的数据。

      【问题解决方案】

      1. 确保 applyReport 函数正确地接收并传递了数据。
      2. 检查 apply 函数中的 ApplyService 调用是否正确,并且 applyReport.value 是否包含了正确的数据。
      3. 确认后端的 /apply 路由和 ApplyReport 类能够正确解析前端发送的数据。

      【提供示例】 以下是修改后的代码示例,用于确保数据被正确传递:

      // Vue 前端代码
      const applyReport = ref({
        medicantList: [], // 确保这里初始化为数组
        equipmentList: []  // 确保这里初始化为数组
      });
      
      const apply = async () => {
        try {
          let result = await ApplyService(applyReport.value); // 确保 applyReport.value 是一个对象
          ElMessage.success(result.msg ? result.msg : '修改成功');
        } catch (error) {
          console.error("Error applying report: ", error);
          ElMessage.error('申请失败');
        }
      };
      
      // 后端服务代码
      // 假设使用 Express.js
      app.get('/apply', (req, res) => {
        const { medicantList, equipmentList } = req.query; // 从请求的 query 参数中获取数据
        // 处理 medicantList 和 equipmentList,例如保存到数据库
        // ...
        res.send({ msg: '数据接收成功' });
      });
      

      【示例代码运行方式】

      1. 确保你的前端项目是基于 Vue 3 的,并且已经安装了必要的依赖,如 axioselement-plus
      2. 确保你的后端服务是基于 Node.js 并且使用了 Express.js 框架。
      3. 运行前端项目和后端服务。

      【示例代码预期运行结果】 如果前端和后端的代码都正确无误,那么当你在前端调用 apply 函数时,后端应该能够接收到 medicantListequipmentList 数据,并且前端应该会收到一个成功的消息提示。如果有任何错误,前端会收到一个错误消息提示。

      展开全部

      评论 编辑记录
    • 码农阿豪 Java领域优质创作者 2024-04-22 15:00
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      问题分析:
      1. 前端向后端传递数据时,需要将数据封装成一个对象,并指定传递方式和数据格式。在本文中,前端传递的数据模型为一个对象,包含两个数组list1和list2。
      2. 后端接收前端数据时,需要保证接收数据异常,并且需要根据前端指定的数据格式,将数据转化为对应的Java对象,以便在后续的业务中进行处理。在本文中,后端ApplyReport类中包含两个List成员变量,用于接收前端发送的List数据。 问题原因:
      3. 前端传递的数据格式不符合后端要求的格式。
      4. 后端接收数据时存在类型转换或解析异常。 解决方案:
      5. 确认前端传递的数据格式是否和后端要求的格式一致,例如数据字段和类型是否相同,传递方式是否正确等。
      6. 后端在接收数据时,可以使用工具类进行数据转换或解析,例如Jackson库等。根据前端传递的数据格式,使用对应的声明或注解进行类型转换,以获取对应的Java对象。 案例代码: 前端传递数据模型:
      let data = {
        list1: [1, 2, 3],
        list2: ['a', 'b', 'c']
      }
      axios.post('/api/update', data)
      

      后端ApplyReport类接收数据:

      @RequestMapping(value = "/update", method = RequestMethod.POST)
      public void update(@RequestBody ApplyReport applyReport) {
        System.out.println("list1: " + applyReport.getList1());
        System.out.println("list2: " + applyReport.getList2());
      }
      

      使用Jackson库进行数据转换,确保数据类型正确:

      public void update(@RequestBody String json) {
        ObjectMapper mapper = new ObjectMapper();
        try {
          ApplyReport applyReport = mapper.readValue(json, ApplyReport.class);
          System.out.println("list1: " + applyReport.getList1());
          System.out.println("list2: " + applyReport.getList2());
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      

      展开全部

      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-22 15:00
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      可能出现此问题的原因有很多,以下是一些常见的解决方法:

      1.前端没有将数据以正确的格式传递到后端。解决方法是仔细检查数据传递格式,确保前端与后端的数据格式一致。

      2.后端没有正确解析前端传递的数据。解决方法是检查后端代码中的参数接收方法是否正确,以及确保在后端方法中正确使用了传递的数据。

      3.前端发送的数据量太大,后端无法处理。解决方法是需要在前端限制数据大小,或者在后端增加处理大量数据的能力。

      4.前端发送的数据中包含了无效的值。解决方法是在前端对数据进行验证,确保只有有效的数据被发送到后端。

      5.服务端根本没有接受到数据。解决方法是检查前端是否正确与后端建立了连接,并确认后端是否已被正确配置。

      1. 使用了拦截器拦截了 请求,导致数据无法正常传递。解决方法是检查拦截器代码,确保不会拦截发送到后端的数据。

      可能的方案如下:

      1.确认前端控制台输出的数据已经正确传递

      2.检查后端代码中是否正确接收前端发送的数据

      3.增加处理大量数据的能力

      4.前端对数据进行验证,确保只有有效的数据被发送到后端

      5.确认前后端建立了正确的连接

      6.检查拦截器代码,确保不会拦截发送到后端的数据

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    HarmonyOS【ArkUI组件--TextInput】
    Java内存区域介绍以及JDK1.8内存变化
    golang select 机制
    CUDA的开发技术难点
    MAX6675应用注意事项
    postgresql 数据库 优化需要懂得几个参数
    案例分享——低压电力线载波通信模组(借助电源线实现远距离数据传输、宽压输入、波特率范围广、应用场景多样化)
    这 8 张图终于把 K8S 调度器讲通透了!
    在SQL语句正确的情况下,使用druid库查询ES数据报错的可能原因!
    CentOS单机安装k8s并部署.NET 6程序 压测 记录
  • 原文地址:https://ask.csdn.net/questions/8092816