自定义验证器在spring mvc。
中排除hibernate.validator@RestController
public void foo(@Valid Bar bar){
}
现在注释这样的类:
@FooAnnotation
public class Bar{
@NotNull
private String name;
private List<Foo> foos;
public List<Foo> getFoos(){
return foos;
}
}
最后验证者
@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy =FooConstraint.class)
public @interface FooAnnotation{
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
所以使用常规弹簧启动这个设置工作得很好。必须重新使用一个传统的rest-api并且无法升级到最新版本的spring或hibernate验证器,我有点卡住了。
删除@FooAnnotation
一切正常@NotNull
按预期工作,但@FooAnnotation
我的自定义验证逻辑正在运行但@NotNull
不正常。
想法?
编辑: EDIT2:添加了验证逻辑 EDIT3:版本
public class FooConstraint implements ConstraintValidator<FooAnnotation,Bar> {
@Override
public void initialize(FooAnnotation ff) {
}
@Override
public boolean isValid(Bar resource, ConstraintValidatorContext ctx) {
return (resource.getFoos().size()<30);
}
}
hibernate-validator - 4.3.1.Final spring-webmvc - 4.2.4.RELEASE