如何在springdoc中针对特定字段禁用JSR-303注释处理?
我有以下请求类MyRequestTO
,其中字段name
实际上是可选的。@NotBlank
注释仅应用于未包装的JsonNullable
。这意味着用户在发送MyRequestTO
时可以省略字段,但如果设置为空,则不能为空。但是,open根据需要标记name
字段。将@Schema
注释更改为@Schema(type = "string", required = false)
无助。
我希望避免必须编写自己的注释并使用org.springdoc.core.customizers.OpenApiCustomiser
的解决方案。所需的解决方案也应该适用于其他类型,如带有@NotNull
注释的@NotNull
。
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"
发布于 2021-04-01 10:13:02
@crizzis解决方案--从评论到我的问题--正如预期的那样工作。字段不再标记为必需,但如果提供,则必须符合注释约束。
JSR-303 (例如@NotBlank
或@NotNull
)注释属于类型参数的前面:
private JsonNullable<@NotBlank String> name = JsonNullable.undefined();
private JsonNullable<@NotNull Boolean> enabled = JsonNullable.undefined();
然后,生成的openAPI文档将字段标记为"required" : false
。
发布于 2021-03-26 10:03:06
这不工作,因为@NotBlank
允许空值。
@NotNull
类isValid()方法是在@NotBlank
类isValid()之后调用的,因此禁止空值。
因此,您可以尝试使用@Pattern
验证非黑字符串,如下所示:
@Pattern(regexp = "/^$|\\s+/")
String name
这将允许非空值,但不允许空字符串。
https://stackoverflow.com/questions/66659044
复制相似问题