Javax 嵌套多重验证
Javax nested multiple validations
我有两个 class。一个是 class A,另一个是 class B。 Class A 有一个字符串字段,该字段具有用于检查 base 64 编码的自定义验证。 Class B 有一个 class A 实例的列表。我需要为此列表添加一个自定义验证器,以字节为单位检查总大小。当我在 B 中的 A 实例列表中添加自定义验证器时,它可以工作,但我的 Class A 字符串字段的验证器不会触发。如果我删除自定义验证器 @ValidTotalSize,则 @ValidEncoding 有效。
Class A {
@ValidEncoding
private string content
}
Class B {
@ValidTotalSize
private List<A> contentList
}
我的 JUnit - 在这里,我试图测试 A 中内容的编码。我故意传递了不正确的编码,因此我有一个失败的约束,我想断言。但是在 B 内的 contentList 上添加 @ValidTotalSize 之后,@ValidEncoding 甚至不会触发。我怎样才能确保触发两个验证?
@Test
public void testContentEncoding() {
//create stub with incorrect encoded content
final Set<ConstraintViolation<B>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(stub);
Assert.assertTrue(!violations.isEmpty());
}
我怎样才能使两者都起作用?一个用于验证内部内容,然后一个用于验证列表。
我知道我错过了什么。我还需要将 @Valid 注释添加到 contentList 以触发列表中每个元素的验证。
@Valid
@ValidTotalSize
private List<A> contentList
我有两个 class。一个是 class A,另一个是 class B。 Class A 有一个字符串字段,该字段具有用于检查 base 64 编码的自定义验证。 Class B 有一个 class A 实例的列表。我需要为此列表添加一个自定义验证器,以字节为单位检查总大小。当我在 B 中的 A 实例列表中添加自定义验证器时,它可以工作,但我的 Class A 字符串字段的验证器不会触发。如果我删除自定义验证器 @ValidTotalSize,则 @ValidEncoding 有效。
Class A {
@ValidEncoding
private string content
}
Class B {
@ValidTotalSize
private List<A> contentList
}
我的 JUnit - 在这里,我试图测试 A 中内容的编码。我故意传递了不正确的编码,因此我有一个失败的约束,我想断言。但是在 B 内的 contentList 上添加 @ValidTotalSize 之后,@ValidEncoding 甚至不会触发。我怎样才能确保触发两个验证?
@Test
public void testContentEncoding() {
//create stub with incorrect encoded content
final Set<ConstraintViolation<B>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(stub);
Assert.assertTrue(!violations.isEmpty());
}
我怎样才能使两者都起作用?一个用于验证内部内容,然后一个用于验证列表。
我知道我错过了什么。我还需要将 @Valid 注释添加到 contentList 以触发列表中每个元素的验证。
@Valid
@ValidTotalSize
private List<A> contentList