我在使用 jsr303 时遇到下一个问题:
我已经用以下方式注释了字段:
@NotEmpty(message = "Please specify your post code")
@PostCode(message = "Your post code is incorrect")
private String postCode;
但仅当字段通过@NotEmpty 验证时,我才需要检查@PostCode。如何检查这两个注释?
提前致谢
您可以使用验证组按组执行验证。有关详细信息,请参阅部分3.4.组和组顺序 in JSR-303 http://download.oracle.com/otn-pub/jcp/bean_validation-1.0-fr-oth-JSpec/bean_validation-1_0-final-spec.pdf。在您的示例中,您会执行以下操作:
@NotEmpty(message = "Please specify your post code")
@PostCode(message = "Your post code is incorrect", groups = Extended.class)
private String postCode;
验证时,您将调用默认组的验证,然后如果没有发生错误,则为Extended
group.
Validator validator = factory.getValidator();
Set<ConstraintViolation<MyClass>> constraintViolations = validator.validate(myClass, Default.class);
if (constraintViolations.isEmpty()) {
constraintViolations = validator.validate(myClass, Extended.class);
}
您可以使用验证组做更多事情。
另一种方法是进行所有验证(如果您负担得起),然后手动过滤掉同一字段的多个验证错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)