【发布时间】:2017-11-17 15:48:52
【问题描述】:
我正在使用 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 注入到消息属性的方法。
【问题讨论】:
-
你试过自动装配 MessageSource 类并做 Message.getMessage()。
-
@pvpkiran 当然。我的本地化工作一般,但我对表达式变量的这种情况有点困惑
标签: java spring hibernate validation