目录

SpringBoot3.5.5版本大坑

目录

SpringBoot3.5.5版本大坑

事情是这样的,我在做一个SpringBoot项目实训,使用SpringBoot3.5.5版本搭建的项目。开始写代码一切顺利,在编写一个修改信息的功能时,让我怀疑人生了。下面我来阐述下

  1. 前端使用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")
    }
})
  1. 后端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请求,参数是这样的

https://i-blog.csdnimg.cn/direct/ba398305204849b48c19d58a1b227b90.png

后端接收后,显示的参数是这样的

https://i-blog.csdnimg.cn/direct/9e91a5de62604dabb1481bf2bd87df68.png

对象中的属性值都为空!!!

对象中的属性值都为空!!!

对象中的属性值都为空!!!

一顿检查代码,然后我震惊了!代码没问题!

然后我经过多次尝试,有了这样的骚操作:

前端发送请求:这里注意看name参数的长度

https://i-blog.csdnimg.cn/direct/ba5163e4dbd6447eb9fbd3f85167c9af.png

后端居然接收到值了╮(╯﹏╰)╭

https://i-blog.csdnimg.cn/direct/a099942841e44ca3951227fd507cb8b8.png

问题原因找到了,是前端传参长度过长了!那么问题来了,第一次传递的name值字符长度是12,这算长吗?(我个人是不相信这个原因的,但又无法解释。。。)

那么接下来新的问题产生了,这个name值不可能让用户显示在12个字符以内吧。后续在网上找了好久,一直没有找到好的解决方案。

然后我灵机一动!换个SpringBoot版本试试?(TM机智如我ヾ(๑╹◡╹)ノ")

然后切换为SpringBoot 3.2.0版本,果然一切问题都没有了。。。

(´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)

(´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)        (´Д(︶︹︺)

虽然切换版本后,问题解决了,但在真实项目中不可能随随便便修改SpringBoot版本吧。如果也遇到了这样的问题要怎么解决。如果有大神在,请在评论区发表一下高见哈。。。