如何在字段上对组信息进行硬编码以进行级联验证

时间:2018-01-04 05:26:04

标签: java spring validation

我有以下bean;

public class Customer {

    @NotNull(groups = New.class)
    private String id;

    @Valid
    private List<CustomerDetail> detailList;
}

如您所见,我通过使用CustomerDetail注释字段,将验证级联到detailList中的每个@Valid,但我希望使用硬编码组传播验证,可能吗?无论提供哪个组进行验证,我都希望有一个固定的组,即NewdetailList的验证中有效。

这是由于我的要求相互矛盾,有人希望将详细信息视为Customer的子资源,因此我需要在客户pojo中验证它时始终对其进行全面验证。另一个要求是将每个细节视为一个单独的资源,因此我需要对某些字段进行补丁,因此当单独验证时,可以应用不同的组。

public class CustomerDetail {

    @NotNull(groups = New.class)
    private String desc;

    private String remark;
}

因此,当CustomerCustomerDetail的任何操作时,customerList中的每个New都应使用Customer组,即使public class Customer { @NotNull(groups = New.class) private String id; @Validated(New.class) private List<CustomerDetail> detailList; } 不一定使用该组用于验证。

在某种程度上,我想这样做;

private

但我无法找到这样的功能,我想这样做是为了逃避创建多个群组,这被认为是令人困惑的。

1 个答案:

答案 0 :(得分:0)

您需要引入自己的注释以获得类级别约束。使用验证器中实现的自己的验证逻辑创建自定义注释。

见6.2节。 the doc

的类级约束

或者查看the example