替换约束验证器的默认消息

Kro*_*nen 7 java spring

我正在尝试更改 Spring 中约束验证器的默认消息。

我尝试根据验证错误添加新消息,如下所示:

context.buildConstraintViolationWithTemplate("My custom message").addConstraintViolation();
Run Code Online (Sandbox Code Playgroud)

对于每种情况。

@Override
public boolean isValid(MyData data, ConstraintValidatorContext ctx) {
    boolean valid = false;
    if (!StringUtils.isEmpty(data.getDocumentType())) {
        if (data.getDocumentType().equalsIgnoreCase("N")) {
            valid = isValidTypeN(data.getDocument());
            if(!valid) context.buildConstraintViolationWithTemplate("My custom message for type N").addConstraintViolation();
        } else if(data.getDocumentType.equalsIgnoreCase("R")){
            valid = isValidTypeR(data.getDocument());
            if(!valid) context.buildConstraintViolationWithTemplate("My custom message for type R").addConstraintViolation();
        } else if(data.getDocumentType.equalsIgnoreCase("P")) {
            valid = isValidTypeP(data.getDocument());
            if(!valid) context.buildConstraintViolationWithTemplate("My custom message for type P").addConstraintViolation();
        }
    }       
    return valid;
}
Run Code Online (Sandbox Code Playgroud)

但这是添加一条新消息,而不是替换约束中的默认消息,因此当我在表单页面中显示错误时,它会显示默认消息和我添加的消息,而不是仅显示我动态添加的消息。

小智 6

这段代码应该完成以下工作:

context.disableDefaultConstraintViolation()
Run Code Online (Sandbox Code Playgroud)