Javax嵌套了多个验证

我有两节课。一个是类A,另一个是类B。类A有一个字符串字段,该字段具有用于检查base 64编码的自定义验证。 B类具有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());
}

我怎样才能使它们同时工作?一种是验证内部内容,然后一种是验证列表。

iCMS 回答:Javax嵌套了多个验证

我知道我所缺少的。我还需要在contentList上添加@Valid批注,以触发对列表中每个元素的验证。

@Valid
@ValidTotalSize
private List<A> contentList
本文链接:https://www.f2er.com/1793917.html

大家都在问