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

Spring Boot POST接口@NotBlank校验失效:doorNumber/block字段报错求助

POST接口@NotBlank校验异常排查

错误现象

测试POST接口时返回MethodArgumentNotValidException,提示doorNumber和block字段不能为空,但请求体中已传入doorNumber参数。

问题根源及修复方案

1. doorNumber字段的JavaBean规范问题

在OrderDto类中,doorNumber的getter和setter方法命名不符合JavaBean标准:

// 错误写法
public String doorNumber() {
    return doorNumber;
}

public void doorNumber(String doorName) {
    this.doorNumber = doorName;
}

Spring的消息转换器依赖标准的JavaBean命名规则(getXxx()/setXxx())解析请求体参数,非标准命名会导致参数无法正确绑定,最终doorNumber值为null,触发@NotBlank校验。

修正为标准命名:

public String getDoorNumber() {
    return doorNumber;
}

public void setDoorNumber(String doorNumber) {
    this.doorNumber = doorNumber;
}

2. block字段的校验规则与业务不匹配

  • 从OrderModel的block字段定义(@Column(length = 5))来看,该字段允许为空;
  • 但OrderDto中给block添加了@NotBlank注解,强制要求字段非空;
  • 同时请求体中未传入block参数,因此触发校验错误。

修复方案二选一:

  • 如果业务允许block为空,移除OrderDto中block字段的@NotBlank注解;
  • 如果业务要求block必填,在请求体中补充block参数。

额外注意

检查OrderModel的setOrderNote方法,存在赋值错误:

// 错误写法
public void setOrderNote(String order) {
    this.orderNote = orderNote;
}

应修正为:

public void setOrderNote(String orderNote) {
    this.orderNote = orderNote;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:35:19