Spring mvc JSR 303 hibernate验证器不能使用自定义验证器

时间:2016-07-13 19:15:16

标签: spring hibernate validation spring-mvc

自定义验证器在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

0 个答案:

没有答案