【发布时间】:2019-01-17 08:32:15
【问题描述】:
我创建了一个自定义ConstraintValidator,其中isValid 方法如下所示:
private String message;
@Override
public void initialize(InputValidator constraintAnnotation) {
this.message = constraintAnnotation.message();
}
@Override
public boolean isValid(String inputValue, ConstraintValidatorContext context) {
HibernateConstraintValidatorContext h = context.unwrap(HibernateConstraintValidatorContext.class);
h.disableDefaultConstraintViolation();
//logic goes here
if(!valid) {
h.addExpressionVariable("0", inputValue);
h.buildConstraintViolationWithTemplate(this.message)
.addConstraintViolation();
}
return valid;
}
我在messages.properties中也有以下内容:
error.input=The value {0} is invalid.
当在 thymeleaf 和 MessageSource bean 中使用它时,我可以使用上述消息并替换其中的 {0} 值,但是 HibernateConstraintValidatorContext 不会替换该值。
鉴于我的项目的限制,我无法更改消息格式,例如将其更改为The value ${0} is invalid.。
我目前的应用程序显示响应“用户输入的值无效”。其中“userInput”是表单/对象中字段的名称。
【问题讨论】:
标签: java spring bean-validation hibernate-validator