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

SpringDoc Swagger如何为List<String>配置数组项的长度校验属性

解决方案

你之前的写法是把注解直接作用在List字段本身,规则只会应用到数组层级,不会作用到内部的字符串元素,需要把规则指定到元素层面才能生效,以下是两种常用的实现方式:

方式1:仅用SpringDoc的@Schema注解配置

通过@Schema的items属性专门指定数组内部元素的校验规则,列表本身的长度限制用minItems/maxItems配置:

@Schema(
    required = true,
    // 以下2个参数配置列表本身的长度限制,不需要可删除
    minItems = 1,
    maxItems = 10,
    // items参数指定数组内元素的规则
    items = @Schema(minLength = 5, maxLength = 20)
)
List<String> elements;

方式2:用Jakarta/Javax Validation校验注解配置

JDK 8及以上版本支持将注解加在泛型参数上,把@Size写在泛型的String前,就会作用到列表的每个字符串元素上,外层的@Size作用于列表本身:

// 外层@Size限制列表本身的长度,不需要可删除
@Size(min = 1, max = 10)
// 泛型参数上的@Size限制每个字符串元素的长度
List<@Size(min = 5, max = 20) String> elements;

注:该写法要求SpringDoc版本不低于1.6.x,低版本无法识别泛型参数上的校验注解。

两种方式都可以生成你预期的Swagger结构,也支持按需配置列表本身的长度限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:09