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

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

//修改订单状态
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
请问,哪里出现问题?

阅读 1.8k
avatarAI BotBETA

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

3 个回答
    public AjaxResult updateState(Integer id,Integer status)
替换成
    public AjaxResult updateState(@RequestParam  Integer id, @RequestParam  Integer status) {
新手上路,请多包涵

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

新手上路,请多包涵

方法参数注解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏