You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot Rest PUT方法无法正确接收User对象非id属性数据

问题分析与解决方案

我一眼就揪出了问题的核心——你的updateUser方法里的User user参数缺少了@RequestBody注解!

为什么会出现这个情况?

Spring MVC 默认不会自动把HTTP请求体里的JSON数据绑定到方法参数上。你看到id有值,是因为它是@PathVariable路径变量,Spring能直接从URL里解析出来;但其他属性因为没明确告诉框架要从请求体读取,所以都被初始化为null了。

修改后的代码

把你的updateUser方法调整成这样:

@PutMapping(path = "/api/users/{id}", consumes = "application/json", produces = "application/json") 
public ResponseEntity<User> updateUser (HttpServletRequest request, @PathVariable long id, @RequestBody User user) { 
    System.out.println(user); 
    saveUser(user);
    return ResponseEntity.ok(user); 
}

额外检查项

  • 确保你的User实体类的所有属性都有对应的getter和setter方法,Jackson依赖这些方法完成JSON与POJO的序列化/反序列化。
  • 核对JSON请求体里的字段名和User类的属性名是否完全匹配(大小写敏感),比如你请求里的username、email要和类里的属性名一致。

改完之后再用你原来的curl命令测试,就能看到user对象的所有属性都被正确赋值啦!

内容的提问来源于stack exchange,提问作者en Peris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:59