我正在尝试为自己的REST方法添加自定义验证器。问题是验证器未被调用。
我使用的是this SO question中接受的答案中提到的相同代码。我有CustomValidation批注,实现ConstraintValidator的CustomValidator类。唯一的区别是我的资源方法是带签名的POST:
@POST
public Result createObject(@Valid @CustomValidation MyObject myObject){
}
对我做错了什么的任何想法?感谢。
- 编辑 - 添加代码
CustomValidation
@Constraint(validatedBy = {CustomValidator.class})
@Target(ElementType.PARAMETER)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface CustomValidation {
String message() default "Invalid upload data";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
CustomValidator.java
public class CustomValidator implements ConstraintValidator<CustomValidation, MyObject> {
@Override
public void initialize(CustomValidation constraintAnnotation) {
System.out.println("Initializing validator");
}
@Override
public boolean isValid(MyObject value, ConstraintValidatorContext context) {
System.out.println("Validation called");
return false;
}
}
休息资源:
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MyObjectService extends BaseRestService{
@POST
public Result createObject(@Valid @CustomValidation MyObject myObject){
}
}
我已经验证了hibernate验证器jar是作为依赖项包含的。