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

问题描述:

我有我的自定义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参数。

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

是的,你可以。

你必须解开的ConstraintValidatorContextHibernateConstraintValidatorContext有:

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

然后,您可以使用:

hibernateConstraintValidatorContext.addMessageParameter("name", value); 

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

hibernateConstraintValidatorContext.addExpressionVariable("name", value); 

,如果它是(因此使用表达式语言和类似${variable}

+0

感谢表达变量,已经发现了它。 –