前端发送数据给后端,后端只得部分数据

项目场景:前后端联调


问题描述

前端发送数据给后端,后端只得部分数据

前端代码:

前端总共有四个数据,统一封装到form表单里面,并发送给后端

前端form表单:

      form: {
        cid: '',
        cName: '',
        count: '',
      },

前端axios请求:

// 编辑 
            this.$axios.post('/classification/update', this.form,
              {
                headers: {
                  "Authorization": this.$store.getters.getToken
                },
              }).then((res) => {
                  this.$message.success('编辑成功');
                  this.dialogVisible = false;
                  this.getlist();
              }).catch((err) => {
                this.$message.error(res.data.msg);
              });

抓包结果:前端已发送数据,cName已有数据

在这里插入图片描述

后端代码类别类代码:

import lombok.Data;

/**
 * 类别类
 */
@Data
public class Classification {
    //类别ID
    private Long cid;
    //类别名称
    private String cName;
    //借阅量
    private int count;
    //状态
    private int status;
}

后端接收代码:

@RequestMapping("/update")
public String update(@RequestBody Classification classification) {
    //1.判断非空
    if (classification == null) {
        return JSON.toJSONString(AjaxResult.fail(-1, "数据错误"));
    }
    //2.操作
    int result = classificationService.update(classification);
    return JSON.toJSONString(AjaxResult.success(result));
}

后端打印:

在这里插入图片描述

打印结果:显示cName为空

在这里插入图片描述


原因分析:

产生原因:是lombok生成的getter,setter方法产生问题,在代码中lombok的get方法为 getCName()

在这里插入图片描述

但是实际上在类别中,构造的getter,setter方法是getcName() ,所以后端获取的数据为空

在这里插入图片描述


解决方案:

解决方案一:更改属性名,即cName改成classificationName
Lombok:

在这里插入图片描述

类别中的构造:

在这里插入图片描述

以上均同步
解决方案二:在这个类别中,单独构造getter,setter方法,当你所涉及的方法比较多时

在这里插入图片描述

此时再发送数据
抓包结果:
在这里插入图片描述

后端打印结果:

在这里插入图片描述


总结

在Java后端中,类别的变量声明时,首字母不要小写或者大写,大写也是类似的结果,从而避免类似的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值