记录一些遇见的bug——关于Lombok的一个大坑,使用@RequestBody接收axios请求对象时,对象所有属性均为null

记录一些遇见的bug——关于Lombok的一个大坑,使用@RequestBody接收axios请求对象时,对象所有属性均为null

一、问题

使用axios在前台发送post请求时,后台使用@RequestBody注解接收NoticeAddFo对象,拿不到数据。
拿不到数据问题不大,问题是它也不报错。。。。

//添加公告
const noticeApis = {
    
    
    confirmAdd(addNotice){
    
    
        return window.axios({
    
    
            url:'/api/notice/add',
            method:'post',
            data:addNotice
        })
    }
}

export default noticeApis

二、原因

各种研究各种试,排除了各种错误可能,前台没有多一个或者少一个逗号,后台逻辑也没问题,前台代码后台代码各种方法重写了6遍,还是接收不到。
最后忽然发现:
springboot框架自带的set和get方法长这样子:
在这里插入图片描述
而查看编译后的字节码文件,Lombok替我生成的set和get方法长这样子:
在这里插入图片描述
以NoticeAddFo类的nContent属性为例:
springboot默认的方法是setnContent(),没有把属性名的首字母大写。
而Lombok利用反射,默认将所有属性的首字母大写来生成set和get方法,写出来的是setNContent()!

三、解决方案

(1) 不用Lombok。
使用idea工具的Generate一键生成的set和get方法与springboot框架的默认方法一样,首字母没有大写,就可以拿到值了。
(2)更改类属性名,不要用首字母小写第二个字母大写这样的格式。

猜你喜欢

转载自blog.csdn.net/weixin_56039103/article/details/126071998