记录一些遇见的bug——关于Lombok的一个大坑,使用@RequestBody接收axios请求对象时,对象所有属性均为null
使用idea工具的Generate一键生成的set和get方法与springboot框架的默认方法一样,首字母没有大写,就可以拿到值了。各种研究各种试,排除了各种错误可能,前台没有多一个或者少一个逗号,后台逻辑也没问题,前台代码后台代码各种方法重写了6遍,还是接收不到。而Lombok利用反射,默认将所有属性的首字母大写来生成set和get方法,写出来的是setNContent()!springbo
·
一、问题
使用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)更改类属性名,不要用首字母小写第二个字母大写这样的格式。
更多推荐
已为社区贡献7条内容
所有评论(0)