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

SpringBoot PUT接口传参时报int参数无法转null错误如何解决

报错原因
  • Java中的基础数据类型(int、double、long等)属于值类型,本身不支持存储null值,每个基础类型都有默认初始值,比如int默认值为0、double默认值为0.0。
  • 你在代码中将year、price参数标注为@RequestParam(required = false),意味着这两个参数允许不传。当你发起请求未携带这两个参数时,Spring MVC会尝试为这两个参数注入null值,但参数声明的是基础类型int和double,无法接收null,因此触发了报错。
解决方法

将参数的基础类型替换为对应的Java包装类即可,包装类属于引用类型,支持接收null值:

  • int对应的包装类是Integer
  • double对应的包装类是Double

修改后的Controller代码如下:

@PutMapping(path = "{bookId}")
public void updateBook(
        @PathVariable("bookId") Long bookId,
        @RequestParam(required = false) String title,
        @RequestParam(required = false) String author,
        @RequestParam(required = false) Integer year,
        @RequestParam(required = false) Double price) {
    bookService.updateBook(bookId, title, author, year, price);
}

额外注意事项

  • 需要同步修改bookService.updateBook方法中对应year、price的入参类型为Integer和Double,避免方法调用时类型不匹配。
  • 你当前的请求参数是拼接在URL后的查询参数,请求头里的Content-Type: application/json实际不生效,如果你后续需要用JSON请求体传参,需要调整代码用@RequestBody接收实体类参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:21:04