我想要达到的目标可能有点奇怪,但遗憾的是我无法轻易改变。我有一个具有嵌套资源的DTO。嵌套资源得到验证,并且它获得的验证根据其父项的属性而不同。
class rootDto {
@NotEmpty
private String type;
@Valid
private AddressDto address;
// Other attributes follow ...
}
现在AddressDto如下所示:
class AddressDto {
@NotEmpty(/* ONLY IF rootDto.type IS 'xxx' */)
private String name;
@NotEmpty(/* ONLY IF rootDto.type IS 'yyy' */)
private String street;
// Other attributes follow ...
}
我读过关于班级限制(example answer),但我不认为这是我想要的。我总是可以为Validator
创建一个rootDto
,其中包含AddressDto
的条件验证但是这样会很难看,因为AddressDto
不是我唯一需要验证的嵌套资源。
所以我的主要问题是,我可以以某种方式从其父级公开嵌套资源属性,以便将它们用于验证吗?有没有找到/想到的替代方案?
答案 0 :(得分:0)
如果您使用Hibernate Validator作为Bean Validation提供程序并且很乐意使用非标准功能,您可以使用Hibernate Validator' openModal()
SPI - http://docs.jboss.org/hibernate/validator/5.2/reference/en-US/html_single/#__literal_groupsequenceprovider_literal
我们的想法是使用您GroupSequenceProvider
上使用GroupSequenceProvider
以编程方式激活的验证组。