Jim*_*Ott 6 validation spring bean-validation spring-web
春季4.3.2
我需要手动调用SmartValidator.validate(),我需要它使用我在目标实体上定义的验证组.javadoc说这个......
"validate()的这个变体支持验证提示,例如针对JSR-303提供程序的验证组(在这种情况下,提供的提示对象需要是类型为Class的注释参数)."
void validate(Object target,
Errors errors,
Object... validationHints)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我找不到有关使用"validationHints"的更多信息或示例.所以我一直在尝试以下内容......
validator.validate(targetEntity, errors, new Class[]{ValidationGroup1.class});
validator.validate(targetEntity, errors, ValidationGroup1.class);
Run Code Online (Sandbox Code Playgroud)
到目前为止,它完全忽略了我的分组.它总是调用所有验证器.有任何想法吗?
谢谢!
===================================
更新:javadoc也说这个..
"注意:实际目标Validator可能会忽略验证提示,在这种情况下,此方法的行为应与其常规Validator.validate(Object,Errors)兄弟一样."
这听起来像正在发生的事情.但它没有提供任何线索,为什么它可能会忽略它.
好吧那么.似乎'答案'是不使用Spring.这是我的解决方法......
import javax.validation.Validator;
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation> violations = validator.validate(targetEntity, new Class[]{group1.class, group2.class});
Run Code Online (Sandbox Code Playgroud)
然后我将Set转换为Spring FieldErrors(因为所有内容都已配置为运行Spring).有点像clusterf***,但至少它现在正在运行.
归档时间: |
|
查看次数: |
3398 次 |
最近记录: |