是否可以为约束违反模板消息添加消息参数?
问题描述:
我有我的自定义validator
,我想为它添加一些错误消息。 所以我有下面的代码:是否可以为约束违反模板消息添加消息参数?
@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
参数。
建筑约束违规时可以添加它吗?
答
是的,你可以。
你必须解开的ConstraintValidatorContext
到HibernateConstraintValidatorContext
有:
HibernateConstraintValidatorContext hibernateConstraintValidatorContext = constraintValidatorContext.unwrap(HibernateConstraintValidatorContext.class);
然后,您可以使用:
hibernateConstraintValidatorContext.addMessageParameter("name", value);
(和你看起来像一个消息参数({variable}
),所以它可能是你必须使用 - 注意你需要HV 5.4.1.Final有这种方法)
或
hibernateConstraintValidatorContext.addExpressionVariable("name", value);
,如果它是(因此使用表达式语言和类似${variable}
)
感谢表达变量,已经发现了它。 –