之前在 SpringBoot v2.5.7 中,我有这个 Spring REST 控制器方法。它有一个TestCriteriaDTO 类型作为路径参数。
@GetMapping(path = "/test")
public void test(TestCriteria testCriteria) {
}
Run Code Online (Sandbox Code Playgroud)
而TestCriteria班级就是这样的。(Language是一个可以采用 或EN的枚举FR)。
public class TestCriteria {
@ApiModelProperty(allowEmptyValue = true)
List<Language> langauges;
}
Run Code Online (Sandbox Code Playgroud)
我使用了 Springfox Swagger (springfox-boot-starter v3),Swagger UI 如下所示:
但后来我不得不将 SpringBoot 升级到 v3,并使用 Springdoc 和 OpenAPI v3 for Swagger。现在TestCriteria类看起来像这样:
public class TestCriteria {
@Schema(type="array")
@Parameter(allowEmptyValue = true)
List<Langauge> languages;
}
Run Code Online (Sandbox Code Playgroud)
现在 Swagger UI 不再显示languages为可选择值的字段,而是显示为对象。

我还比较了生成的 OpenAPI 定义,发现:
以前的 API …
swagger-ui spring-boot openapi springdoc springfox-boot-starter