Jersey/JAX-RS:如何自动使用@Valid递归级联bean验证?

2024-05-22

我正在 Jersey 的 REST 资源端点中验证我的 POJO:

public class Resource {
    @POST
    public Response post(@NotNull @Valid final POJO pojo) {
        ...
    }
}

public class POJO {
    @NotNull
    protected final String name;

    @NotNull
    @Valid
    protected final POJOInner inner;

    ...
}

public class POJOInner {
    @Min(0)
    protected final int limit;

    ...
}

这似乎工作正常。

但是,那@Min(0)仅当字段存在时才验证注释inner@Valid注解。感觉添加不对@Valid对每个不是原语的字段进行注释。

有没有办法告诉 bean 验证器自动递归地继续验证,即使没有@Valid注释存在吗?我想要我的POJO如下:

public class POJO {
    @NotNull
    protected final String name;

    @NotNull
    protected final POJOInner inner;

    ...
}

实际上,根据规范,添加 @Valid 正是针对此用例。来自 JSR 303 规范:

除了支持实例验证之外,还支持对象图的验证。图验证的结果作为一组统一的约束违规返回。 考虑 bean X 包含类型 Y 的字段的情况。通过使用 @Valid 注释对字段 Y 进行注释,验证器将在验证 X 时验证 Y(及其属性)。

...

@Valid注解是递归应用的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey/JAX-RS:如何自动使用@Valid递归级联bean验证? 的相关文章

随机推荐