有没有一种方法可以有条件地跳过验证bean字段



我们有一个客户和地址域类,如:

客户:

@NotNull
private Long id;
@NotBlank
@Length(max = 100)
private String name;
@NotNull
@Valid
private Address homeAddress;
@Valid
private Address deliveryAddress;

地址:

@NotBlank
@Length(max = 100)
private String streetname;
@NotBlank
@Length(max = 10)
private String housenumber;
@Length(max = 10)
private String housenumberExtension;
@NotBlank
@Pattern(regexp = "[0-9]{4}[A-Z]{2}")
private String postcode;
@NotBlank
@Length(max = 100)
private String city;

它使用@Valid注释来验证整个Customer图,包括子Address字段。

在这种情况下,我们只想验证地址字段,以防它有非空字段。因此,例如,如果所有customer.homeAddress字段都为null,那么它应该是正常的,不应该导致验证错误。

我知道最好将homeAddress设置为null以跳过验证。但我们使用的是一个旧的领域模型,而事实并非如此(我们无法更改它)。无论如何,我们正在尝试合并java.validation注释。

我想知道我们是否可以在类级别应用一个(自定义)注释,它可以强制验证api跳过那个bean?

我认为在类级别应用自定义注释是进行验证的好方法。您可以查看Hibernate Validator来了解如何做到这一点。

我希望它能帮助你,顺致敬意,

最新更新