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

使用POJO时@PostMapping接收参数为null问题及对应JS代码

解决Spring Boot @PostMapping接收POJO参数为null的问题

我来帮你排查这个参数接收为null的问题,结合你给出的前端AJAX代码,主要有以下几个常见原因和对应的解决办法:

1. 后端方法未添加@RequestBody注解

因为你的前端发送的是JSON格式的请求体,Spring Boot需要通过@RequestBody注解来将请求体中的JSON数据绑定到POJO对象上。如果没有这个注解,Spring无法识别请求体中的内容,参数就会为null。

正确的后端方法示例:

@PostMapping("/api/customer/save")
public ResponseEntity<?> saveCustomer(@RequestBody YourPojoClass customer) {
    // 你的业务逻辑处理
    return ResponseEntity.ok(...);
}

2. POJO类的字段名与前端参数key不匹配

检查你的后端POJO类的字段名是否和前端formData中的key完全一致(包括大小写)。比如前端用的是word和meaning,后端POJO的字段必须是private String word;和private String meaning;,不能写成Word或者Meaning(Java是大小写敏感的)。

3. POJO类缺少无参构造函数或getter/setter方法

Spring在实例化POJO对象时,需要依赖无参构造函数来创建实例,同时通过setter方法为字段赋值。如果你的POJO没有这两个部分,Spring无法正常初始化对象,字段值会为null。

正确的POJO示例:

public class Customer {
    private String word;
    private String meaning;

    // 必须要有无参构造函数
    public Customer() {}

    // 必须为每个字段提供getter和setter
    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public String getMeaning() {
        return meaning;
    }

    public void setMeaning(String meaning) {
        this.meaning = meaning;
    }
}

4. 检查请求URL是否正确

你的前端代码中用window.location + "api/customer/save"拼接URL,要确保最终的请求地址和后端@PostMapping的路径完全匹配。比如如果window.location是http://localhost:8080/,拼接后是http://localhost:8080/api/customer/save,后端的接口路径必须一致,否则请求会落到错误的接口上,导致参数接收失败。

额外验证建议

你可以先用Postman直接发送JSON请求到后端接口,测试是否能正常接收参数:

请求方式:POST
请求URL:你的后端接口地址
请求头:Content-Type: application/json
请求体:

{
    "word": "测试单词",
    "meaning": "测试释义"
}

如果Postman能正常接收参数,说明后端没问题,再回头检查前端AJAX的细节(比如有没有拼写错误,或者浏览器控制台有没有报错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:41