首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁用springdoc中的JSR-303注释处理。

禁用springdoc中的JSR-303注释处理。
EN

Stack Overflow用户
提问于 2021-03-16 16:10:24
回答 2查看 649关注 0票数 1

如何在springdoc中针对特定字段禁用JSR-303注释处理?

我有以下请求类MyRequestTO,其中字段name实际上是可选的。@NotBlank注释仅应用于未包装的JsonNullable。这意味着用户在发送MyRequestTO时可以省略字段,但如果设置为空,则不能为空。但是,open根据需要标记name字段。将@Schema注释更改为@Schema(type = "string", required = false)无助。

我希望避免必须编写自己的注释并使用org.springdoc.core.customizers.OpenApiCustomiser的解决方案。所需的解决方案也应该适用于其他类型,如带有@NotNull注释的@NotNull

代码语言:javascript
运行
复制
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;
    }
}

相关依赖

代码语言:javascript
运行
复制
implementation "org.openapitools:jackson-databind-nullable:0.2.1"
implementation "org.springdoc:springdoc-openapi-ui:1.5.5"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-01 10:13:02

@crizzis解决方案--从评论到我的问题--正如预期的那样工作。字段不再标记为必需,但如果提供,则必须符合注释约束。

JSR-303 (例如@NotBlank@NotNull)注释属于类型参数的前面:

代码语言:javascript
运行
复制
private JsonNullable<@NotBlank String> name = JsonNullable.undefined();
private JsonNullable<@NotNull Boolean> enabled = JsonNullable.undefined();

然后,生成的openAPI文档将字段标记为"required" : false

票数 0
EN

Stack Overflow用户

发布于 2021-03-26 10:03:06

这不工作,因为@NotBlank允许空值。

@NotNull类isValid()方法是在@NotBlank类isValid()之后调用的,因此禁止空值。

因此,您可以尝试使用@Pattern验证非黑字符串,如下所示:

代码语言:javascript
运行
复制
@Pattern(regexp = "/^$|\\s+/")
String name

这将允许非空值,但不允许空字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66659044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档