您只能在消息模板中引用相关约束注释的属性,例如,对于具有属性的约束min
和max
:
size must be between {min} and {max}
因此,您可以将有效值指定为注释属性。
如果您使用 Hibernate Validator 作为 Bean Validation 提供程序,您可能会实现一个自定义ResourceBundleLocator,它返回带有您的值的键的包:
public class MyResourceBundleLocator implements ResourceBundleLocator {
public ResourceBundle getResourceBundle(Locale locale) {
//return a bundle with keys for your values, e.g. set dynamically
}
}
然后在获取验证器时设置定位器:
Validator validator Validation.byProvider(HibernateValidator.class)
.configure()
.messageInterpolator(
new ResourceBundleMessageInterpolator(
new MyResourceBundleLocator() ) )
.buildValidatorFactory()
.getValidator();
或者,您可以自己格式化和准备消息并将其传递给buildConstraintViolationWithTemplate()
.