将属性值注入java验证错误消息

时间:2014-05-27 21:39:58

标签: java hibernate validation bean-validation

我想在验证消息中包含更多信息,例如要评估的类的ID。例如:

class Clown {

int id;

@Min(value=15, message="Clown id:{id}'s shoe size should be greater than 15"
int shoeSize;
}

有没有办法实现这一点,无论是否在javax或Hibernate中定义自定义验证器?

如果没有,你能否建议任何其他可以做到这一点的验证框架?

1 个答案:

答案 0 :(得分:0)

Hibernate Validator具有HibernateConstraintValidatorContext的概念,允许您在消息插值之前将自定义变量绑定到EL上下文中。您可以通过以下方式在约束验证器实现中获取HibernateConstraintValidatorContext:

HibernateConstraintValidatorContext hibernateContext = context.unwrap( HibernateConstraintValidatorContext.class );

但是,这意味着您可以在约束验证器中获取要绑定的值。在你的情况下,不确定你能做到这一点。在某种程度上,你想要获得小丑id,但你无法访问字段约束验证器中的完整小丑实例。我想你可以使用类级约束。在这种情况下,您可以访问id,但另一方面,您需要以编程方式进行min检查,而不能使用@Min。