当前位置: 首页 > 知识库问答 >
问题:

javascript - 若依分离版前端向后端传递数据后端显示获取为NULL?

赵修诚
2024-03-27

如题所述:前端的代码如下

//修改订单状态export function updatOrderStatus(id,status){    const data={        id,        status    }    return request({        url:"/business/orderInfo/updateState",        method:"post",        data:data    })}

传递如图
image.png
image.png
后端处理代码如下:

 @ApiOperation("订单管理-修改订单状态")    @ApiImplicitParams({                @ApiImplicitParam(name="id",value = "主键id",required = true,dataType = "Integer"),                @ApiImplicitParam(name="status",value = "状态0进行1结束",required = true,dataType = "Integer")            })    //  @Log(title = "订单管理-订单列表", businessType = BusinessType.OTHER)    @PostMapping("/updateState")    public AjaxResult updateState(Integer id,Integer status) {        System.out.println("更改订单编号:"+id+"\n");        System.out.println("更改订单状态:"+status+"\n");        if(Objects.isNull(id)){            return AjaxResult.error("输入主键id");        }        if(Objects.isNull(status)){            return AjaxResult.error("输入状态");        }        BOrderInfo bOrderInfo=new BOrderInfo();        bOrderInfo.setId(id);        bOrderInfo.setStatus(status);        System.out.println("更改订单状态:"+bOrderInfo.toString()+"\n");        orderInfoServiceImpl.update(bOrderInfo);        return AjaxResult.success();    }

后端打印结果如下:
image.png
请问,哪里出现问题?

共有3个答案

孙宏扬
2024-03-27

目前来看,你前端传递的参数应该是json类型,你应该确定你前端发送过来的参数是json类型还是散装参数。如果是json类型,你需要定义一个实体类,这个实体类中有id与status字段,并且在接口上添加@RequestBody注解来指定从http请求体中获取参数。

那鹏
2024-03-27
    public AjaxResult updateState(Integer id,Integer status)替换成    public AjaxResult updateState(@RequestParam  Integer id, @RequestParam  Integer status) {
苏鸿才
2024-03-27

你的问题是关于前后端数据传递的问题。从你给出的代码和描述来看,前端发送的数据应该是正确的,因为你在前端控制台中可以看到数据已经被正确地打包并发送。然而,后端在接收这些数据时却显示为NULL。

这个问题可能的原因有几个:

  1. 请求映射问题:你的前端发送的POST请求的URL是"/business/orderInfo/updateState",但是后端处理该请求的URL是"/updateState"。你需要确保这两个URL是匹配的。如果它们不匹配,那么后端将不会接收到前端发送的数据。
  2. 数据绑定问题:在你的后端代码中,你试图直接从请求中获取idstatus参数。然而,Spring Boot在处理POST请求时,默认会将请求体中的JSON数据绑定到一个对象上,而不是直接提取参数。你需要创建一个DTO(Data Transfer Object)来接收这些数据,然后在方法参数中使用这个DTO。例如:
public class OrderUpdateDTO {    private Integer id;    private Integer status;    // getters and setters}@PostMapping("/updateState")public AjaxResult updateState(@RequestBody OrderUpdateDTO dto) {    Integer id = dto.getId();    Integer status = dto.getStatus();    // ...}
  1. Content-Type问题:在发送POST请求时,需要确保请求的Content-Type被设置为"application/json"。否则,后端可能无法正确解析请求体中的数据。

综上所述,你可以首先检查你的URL是否匹配,然后尝试使用DTO来接收数据,并确保你的请求设置了正确的Content-Type。

 类似资料:
  • 如题:我使用的是若依分离版,在JAVA后端获取从前端传递的数据,因为业务原因需要单独获取前端传递来的数据,比如前端更新数据时需要获取前端传递来的ID,在BAccomOrder类中定义了private Integer id; 但是在后端获取的时候显示BAccomOrder accomOrder accomOrder.getId()无法解析 'BAccomOrder' 中的方法 'getId', 之前

  • 为什么可以获取后端数据,但是要绑定的时候就显示空值 绑定数据会显示但是也会报错

  • 前后端分离 在B/S架构的环境中,前后端分离一直都众说纷纭,没有一个标准。我觉得打开可以分为三个阶段: 传统的分离方法 传统意义上的前后端分离,前端指的是美工、切图、设计,后端是实现代码、数据库相关的实现。美工设计和生成的前端页面,给到程序员来做集成。那么这里其实就不分什么前后端了,程序员从数据库一直搞到前端页面的样式,就是“全能型运动员“。当然,一般传统上的开发协作模式有两种: 一种是前端先写一

  • 前言 上一篇我们遇到'少年,是不是忘了npm run mock?'的警告,这一篇我们就来解决这个问题。 开发 一、安装包 安装koa和一系列的包(我们用的是koa v2): koa koa-bodyparser koa-router boom nodemon mockjs 解释说明一下(知道的同学可以忽略): 名称 作用 koa 我们都知道Node.js有HTTP模块,来处理HTTP请求

  • 使用的若依前后端分离版,前端是vue2,点击添加角色,第一次进来的时候,内容显示有点乱,刷新页面,再打开就好了,如何解决呢

  • 试图弄清楚如何从mysql获取数据并将其显示在ReactJS中。我在后端使用NodeJS和Express。我尝试了在互联网上找到的代码片段,但它不像预期的那样工作。 这是我运行反应应用程序时得到的。 我的NodeJS代码 我的反应码