springboot接口接收list类型入参无数据,@RequestBody无法映射List数据

本文探讨了在SpringBoot项目中使用@RequestBody注解时遇到的问题,特别是针对List类型的参数无法正常注入的情况。文章详细介绍了排查过程及最终解决方案,并指出@ApiModel注解的不当使用可能是导致问题的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

巨坑!!!!

springboot做接口时,由于业务原因,需要在实体类中声明一个List类型的变量,通过@RequestBody进行同步数据

在这里插入图片描述
实体类中有个List存储其他实体类,想通过@RequestBody进行同步的,但老是同步不了

关于@RequestBody同步List类型等其他类型入参为null问题解决办法:

1.查看是否使用@Data的getset方法,由于lombook生成的getset方法和我们自己写的getset方法是不一样的,自己生成一下getset,再加个Serializable序列化

2.查看字段的命名,使用驼峰是正确的,但是要求前两个字母都为小写,出错原因可能就是前两个字母一小一大,导致生成的getset方法找不到这个变量,例如: cOmpost是不规范的,正确:comPost

3.为什么说巨坑呢,因为上面那些办法都没用上,产生注入不了list,我还发现一个原因

3.1我把controller里的其他接口都删除,只留一个注入list的接口,发现可以正常注入,当加上其他接口在同一个controller时就不能正常注入,初步怀疑是语法问题,后来检查了一下语法是没问题的,从入参开始排查到Vo实体类中看有没有什么语法漏洞,以下是我实体类
@Data
@TableName(value = "UserInfo")
@ApiModel("用户信息")
public class UserInfoVo extends BaseVo{
    private static final long serialVersionUID = 1L;

    //用户id
    @ApiModelProperty(value = "用户id")
    @TableId(type = IdType.AUTO)
    private int userId;

    private List<SysUserRole> CommpyVo;

    //用户名称
    @ApiModelProperty(value = "用户名称")
    private String username;

问题是出在@ApiModel(“用户信息”)这个注解上,在我其他的实体类上也注解了@ApiModel(“用户信息”),就是注解值一模一样,我个人猜测是在编译的时候生成的类的标识是一样的,导致在同一个controller中找到两个同样的实体类标识,导致映射失败,后来把这个注解值改成唯一值就能正常映射了

确实swwage的注解怎么会对参数映射产生影响是很难想到的事

如果对你有帮助,动动小手给作者一点爱心赞吧,感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值