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

Spring Boot @PutMapping如何携带id重定向及媒体类型不支持报错解决

问题根因

你触发的org.springframework.web.HttpMediaTypeNotSupportedException异常和Whitelabel错误页,核心原因是请求格式和接口参数注解不匹配:

  • 前端提交的是application/x-www-form-urlencoded格式的表单数据
  • 接口中@RequestBody注解仅支持解析application/json等序列化后的请求体内容,天生不支持表单编码格式的参数解析
  • 你测试的3种@PathVariable写法均无问题,路径变量的解析逻辑和本次报错无关
解决方案

根据你的业务场景二选一即可:

方案1:前后端分离场景(推荐)

前端发起请求时设置请求头Content-Type: application/json,把参数序列化为JSON字符串放入请求体,即可适配你当前的代码写法。

方案2:传统表单提交场景

直接移除@RequestBody注解即可,Spring会自动把表单字段映射到BoardDto的对应属性:

@PutMapping("/post/edit/{id}")
public String update(@PathVariable("id") Long id , BoardDto boardDto) {
    boardService.savePost(boardDto);
    return "redirect:/post/" + id;
}

如果低版本Spring对PUT方法的表单参数接收有异常,可以加@ModelAttribute明确标记参数映射规则:

@PutMapping("/post/edit/{id}")
public String update(@PathVariable("id") Long id , @ModelAttribute BoardDto boardDto) {
    boardService.savePost(boardDto);
    return "redirect:/post/" + id;
}

内容的提问来源于stack exchange,提问作者김진욱

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:57:03