SpringBoot3.5.5版本大坑
目录
SpringBoot3.5.5版本大坑
事情是这样的,我在做一个SpringBoot项目实训,使用SpringBoot3.5.5版本搭建的项目。开始写代码一切顺利,在编写一个修改信息的功能时,让我怀疑人生了。下面我来阐述下
- 前端使用AXIOS发送异步请求代码:
let formData = new FormData();
for (let field in this.activityQuery) {
if (this.activityQuery[field]) {
formData.append(field, this.activityQuery[field])
}
}
doPost("/api/editActivity", formData).then(res => {
if (res.data.code === 200) {
messageTip("编辑成功", "success")
this.$router.push("/dashboard/Activity");
} else {
messageTip("编辑失败", "error")
}
})
- 后端controller接收参数代码
@PostMapping(value = "/api/editActivity")
public R editActivity(@RequestBody ActivityQuery activityQuery, @RequestHeader(value = "Authorization") String token) {
activityQuery.setToken(token);
int update = activityService.updateActivity(activityQuery);
return update >= 1 ? R.OK() : R.FAIL();
}
经过最终测试代码是没有问题的,但出现了一个匪夷所思的情况:
问题复现:
前端发送post请求,参数是这样的
后端接收后,显示的参数是这样的
对象中的属性值都为空!!!
对象中的属性值都为空!!!
对象中的属性值都为空!!!
一顿检查代码,然后我震惊了!代码没问题!
然后我经过多次尝试,有了这样的骚操作:
前端发送请求:这里注意看name参数的长度
后端居然接收到值了╮(╯﹏╰)╭
问题原因找到了,是前端传参长度过长了!那么问题来了,第一次传递的name值字符长度是12,这算长吗?(我个人是不相信这个原因的,但又无法解释。。。)
那么接下来新的问题产生了,这个name值不可能让用户显示在12个字符以内吧。后续在网上找了好久,一直没有找到好的解决方案。
然后我灵机一动!换个SpringBoot版本试试?(TM机智如我ヾ(๑╹◡╹)ノ")
然后切换为SpringBoot 3.2.0版本,果然一切问题都没有了。。。
(´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺)
(´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺) (´Д(︶︹︺)
虽然切换版本后,问题解决了,但在真实项目中不可能随随便便修改SpringBoot版本吧。如果也遇到了这样的问题要怎么解决。如果有大神在,请在评论区发表一下高见哈。。。