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

List不生效@NotEmpty注解,传入null未返回400错误如何解决?

问题:List含null元素时未触发400校验错误

我有一个通过请求体填充的List,期望当请求中无值或传入null时返回400 BAD Request状态码。目前无值传递时表现符合预期,但传入null元素的List时未触发400错误,该如何处理?

相关代码

class Data {
    @NotEmpty
    private List<@Valid String> values;
}

测试场景

  • 请求体1(含有效值)返回200(符合预期):
    {
      "values": [
            "randomValue"
          ]
    }
    
  • 请求体2(无values字段)返回400(VALIDATION_ERROR,符合预期):
    {
    }
    
  • 请求体3(空List)返回400(VALIDATION_ERROR,符合预期):
    {
      "values": [
          ]
    }
    
  • 请求体4(含null元素的List)返回200(预期应为400 VALIDATION_ERROR):
    {
      "values": [
            null
          ]
    }
    

解决方案

问题出在@NotEmpty仅校验List本身:确保List不为null、不是空集合,但不会校验集合内的元素是否为null。要实现元素非null的校验,需要给泛型中的String添加@NotNull注解(如果需要同时校验字符串非空,可改用@NotBlank),同时保留@Valid触发嵌套校验。

修改后的代码:

class Data {
    @NotEmpty
    private List<@Valid @NotNull String> values;
}

如果需要进一步限制字符串不能是空串或空白字符,使用@NotBlank:

class Data {
    @NotEmpty
    private List<@Valid @NotBlank String> values;
}

另外要确保在控制器接收请求体的方法参数上添加@Valid注解(或类上标注@Validated),这样嵌套校验逻辑才会被触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:01:48