是否可以为约束违规模板消息添加消息参数?

时间:2017-08-04 15:52:22

标签: hibernate-validator javax

我有我的自定义@Override public boolean isValid(final String label, final ConstraintValidatorContext constraintValidatorContext) { constraintValidatorContext.disableDefaultConstraintViolation(); if(label.length() > MAX_LENGTH) { constraintValidatorContext .buildConstraintViolationWithTemplate("{error.maxLength}") .addConstraintViolation(); return false; } ... } ,我想为它添加一些错误消息。 所以我有下一个代码:

error.maxLength=You have exceeded max length of {0}

我的邮件看起来像maxLength,因此参数为let disposeBag = DisposeBag()

在构建约束违规时可以添加它吗?

1 个答案:

答案 0 :(得分:6)

是的,你可以。

您必须使用以下内容将ConstraintValidatorContext打包到HibernateConstraintValidatorContext

HibernateConstraintValidatorContext hibernateConstraintValidatorContext = constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class );

然后,您可以使用:

hibernateConstraintValidatorContext.addMessageParameter("name", value);

(你的看起来像一个消息参数({variable})所以它可能是你必须使用的 - 注意你需要HV 5.4.1.Final才能有这个方法)

hibernateConstraintValidatorContext.addExpressionVariable("name", value);

如果它是一个表达式变量(所以使用表达式语言和${variable}之类的东西)