我正在使用 Hibernate Validator 和MessageSource
来本地化违规邮件。
class FooValidator implements ConstraintValidator<ValidFoo, Foo>
@Override
public void initialize(ValidTransitions constraintAnnotation) {
}
@Override
public boolean isValid(Foo foo, ConstraintValidatorContext context) {
//some calculations
String result = calculations.toString();
HibernateConstraintValidatorContext hibernateContext = context.unwrap(HibernateConstraintValidatorContext.class);
hibernateContext.disableDefaultConstraintViolation();
hibernateContext.addExpressionVariable("invalidResult", result)
.buildConstraintViolationWithTemplate("Invalid field: ${invalidResult}")
.addConstraintViolation();
return false;
}
}
我希望messages.properties
中有类似的内容:
ValidFoo.foo=Localized invalid field message, field: ${invalidResult}
但是我找不到从FooValidator
向消息属性注入动态参数的方法。
答案 0 :(得分:1)
命名参数和表达式变量只能由Hibernate解析。
Spring使用MessageFormat。
有关详细信息,请参阅AbstractMessageSource.getMessageInternal。