Javax验证失败时额外错误



我有一个'Answer'对象,它可能是许多类型的答案(电子邮件,电话号码,姓名…)中的一种。我正在编写一个自定义验证器来处理验证,无论答案类型如何,答案文本都存储在单个"值"参数中。

这是我得到的:

注释定义:

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = AnswerValidator.class)
public @interface ValidateAnswerEmail {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

验证器

public class AnswerValidator implements ConstraintValidator<ValidateAnswerEmail, Answer> {
@Override
public boolean isValid(Answer answer, ConstraintValidatorContext context) {
boolean success = true;
// validation #1
// validation #2
// validation #3
return success;
}
}

我的问题是,如果其中一个失败,我将返回一个额外的验证失败消息。这似乎来自return success返回false,然后使用注释String message() default "";作为错误消息。

想知道我是否可以抑制验证违反消息,只返回那些我添加到ConstraintValidatorContext?

No Spring, Vanilla Java。提前谢谢。

留言如下

Constraint violations: 
(1) Kind: PARAMETER
parameter index: 0
message: Email address: some@User@gmail.com is not a valid email address
root bean: org.company.crs.api.AnswerResource@42475403
property path: updateAnswer.arg0
constraint: @org.company.crs.validator.ValidateAnswerEmail(message="", groups={}, payload={})
(2) Kind: PARAMETER
parameter index: 0
message: 
root bean: org.company.crs.api.AnswerResource@42475403
property path: updateAnswer.arg0
constraint: @org.company.crs.validator.ValidateAnswerEmail(message="", groups={}, payload={})

您要找的是:context.disableDefaultConstraintViolation();