2012-01-30 78 views
1

给出的以下两个约束JSR303验证:两个(或更多)验证约束:在第一次返回错误后,不要评估第二个?

@NotNull 
@Pattern (pattern="foobar") 
private String myFooBarMember; 

是否有一个可能性,如果第一一个匹配(=返回错误)(@NotNull)不评估第二个(@Pattern)?或者JSR303总是评估所有约束?如果在第一场比赛之后有可能不对第二场比赛进行评估,请说明如何做到这一点。

非常感谢!

+0

我建议为此使用'group'参数:当组中的一个约束失败时,其他将不会被评估。 – 2012-01-30 09:45:53

回答

1

嘛,我不是一个JSR 303专家,但我发现从1.0 FR以下摘录:

2.3。约束组成

注:

如果一个组成约束失败,如果由约束 标记为@ReportAsSingleViolation,Bean验证提供者 免费不处理这个由 约束的其他构成限制。

和:

3.5。验证程序

  • 所有到达场,执行所有字段级验证(包括超表示的)目标 组匹配,除非给出验证约束已是 了此验证程序中处理给定导航路径 (见第3.5.1节)作为以前组匹配的一部分。

所以从后者,我会说,默认情况下,所有验证器将被执行。

从前者来说,我会说这个(约束组合)将是实现你想要的一种方法。虽然它可能(也可能是)依赖于Bean Validation实现器,所以您需要阅读一些专有文档。