【发布时间】:2021-06-13 23:05:32
【问题描述】:
如何在 springdoc 中为特定字段禁用 JSR-303 注释处理?
我有以下请求类 MyRequestTO 其中字段 name 实际上是可选的。 @NotBlank 注解仅适用于未包装的JsonNullable。这意味着用户可以在发送MyRequestTO 时省略该字段,但如果设置它不能为空。但是,打开的 api 文档将 name 字段标记为必需。将 @Schema 注释更改为 @Schema(type = "string", required = false) 没有帮助。
我想避免必须编写自己的注释并使用org.springdoc.core.customizers.OpenApiCustomiser 的解决方案。所需的解决方案也应该适用于其他类型,例如带有 @NotNull 注释的 JsonNullable<Boolean>。
public class MyRequestTO {
@Schema(type = "string")
@NotBlank
private JsonNullable<String> name = JsonNullable.undefined();
public JsonNullable<String> getName() {
return name;
}
public void setName(JsonNullable<String> name) {
this.name = name;
}
}
相关依赖
implementation "org.openapitools:jackson-databind-nullable:0.2.1"
implementation "org.springdoc:springdoc-openapi-ui:1.5.5"
【问题讨论】:
-
你试过玩
format和pattern吗? -
@mrkernelpanic 在另一种情况下,是的。但是
format和/或pattern如何解决我的问题? -
我考虑过您的要求,即在不为空时至少在该字段中填充一些内容,而正则表达式可以解决这个问题。但显然我并没有那么深入地卷入这种特殊情况。
-
如果把注解放在泛型类型参数(即
private JsonNullable<@NotBlank String> name = JsonNullable.undefined();)上会怎样? -
@crizzis 按预期工作。谢谢
标签: java swagger springdoc springdoc-openapi-ui