任何机构向我解释为什么 ConstraintValidator 类的 isValid() 方法被调用两次?
例如这是我的示例代码:
@POST
@Path("/json/dog")
@Produces("application/json")
@Consumes("application/json")
public Response getDogByJson(@ValidAnimal JsonObject jsonObject) {
return Response.ok("ok").build();
}
@Constraint(validatedBy = {AnimalValidation.class})
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface ValidAnimal {
String message() default "This is not valid !";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
public class AnimalValidation implements ConstraintValidator<ValidAnimal, JsonObject> {
@Override
public void initialize(ValidAnimal constraintAnnotation) {
}
@Override
public boolean isValid(JsonObject jsonObject, ConstraintValidatorContext context) {
System.out.println(">>>>>> : " + jsonObject);
return true;
}
}
当我向此 Web 服务发送请求时,isValid() 方法调用两次。
为什么 ?
注意:我使用 OpenLiberty 18.0.0.3 和 JavaEE 8