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

Spring Boot API已传参却报Required request parameter缺失问题求助

问题修复方案

核心原因

后端通过@RequestParam接收参数,要求参数必须在URL查询字符串或表单提交的form-data/urlencoded中,但DataTables默认会把ajax.data的对象以JSON格式放到请求体里,导致后端无法识别参数。

前端修复方法(二选一)

  • 方式一:直接将参数拼入请求URL
$('#yourTable').DataTable({
    ajax: {
        url: `/ajax/my-ajax-api?myId=${myId}&myOtherParameter=${myOtherParameter}`,
        type: 'POST'
    }
});
  • 方式二:配置ajax.data为函数,强制转为表单格式
$('#yourTable').DataTable({
    ajax: {
        url: '/ajax/my-ajax-api',
        type: 'POST',
        data: function(d) {
            d.myId = myId;
            d.myOtherParameter = myOtherParameter;
            return $.param(d);
        },
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
    }
});

后端可选调整方案

如果想接收JSON格式的请求体,修改后端代码:

  1. 创建参数DTO类
public class MyRequestDto {
    private Long myId;
    private Integer myOtherParameter;
    
    // 生成getter和setter方法
}
  1. 修改接口参数注解
@PostMapping(value = "/ajax/my-ajax-api")
public MyResponseDto runThisMethod(@RequestBody MyRequestDto request) {
    // 通过request.getMyId()、request.getMyOtherParameter()获取参数
}

额外排查步骤

  • 打开浏览器开发者工具的Network面板,查看请求的参数位置:如果参数在Request Payload里,后端用@RequestParam必然报错。
  • 检查前端参数名拼写,确保和后端@RequestParam的参数名完全一致(大小写敏感)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:36:27