有条件地跳过验证bean字段的方法吗?

时间:2014-04-16 07:20:19

标签: java bean-validation hibernate-validator

我们的情况是我们有一个Customer和Address域类,如:

客户:

@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图,包括子地址字段。

我们遇到的情况是,我们只想验证地址字段,以防它有非空字段。 所以例如如果所有customer.homeAddress字段都为null,则应该没问题,不应导致验证错误。

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

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

1 个答案:

答案 0 :(得分:1)

我认为在Class级别应用自定义注释是进行此验证的好方法。 您可以看到Hibernate-Validator以了解如何执行此操作。

我希望它对你有帮助, 最好的问候。