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

Posted 叶不修233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一些遇见的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)更改类属性名,不要用首字母小写第二个字母大写这样的格式。

以上是关于记录一些遇见的bug——关于Lombok的一个大坑,使用@RequestBody接收axios请求对象时,对象所有属性均为null的主要内容,如果未能解决你的问题,请参考以下文章

记录一些遇见的bug——mapstruct和lombok同时使用时,转换实体类时数据丢失问题

记录一些遇见的bug——mapstruct和lombok同时使用时,转换实体类时数据丢失问题

记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.

记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.

记录一些遇见的bug——记录一个使用多线程异步调用openfeign时子线程丢失request请求头导致的空指针异常错误

记录一些遇见的bug——axios请求报500,后端报错com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serial