【问题标题】:Inject property value into java validation error message将属性值注入 java 验证错误消息
【发布时间】:2014-05-27 21:39:57
【问题描述】:

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

class Clown {

int id;

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

有没有办法在 javax 或 Hibernate 中定义自定义验证器或不定义验证器?

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

【问题讨论】:

    标签: java hibernate validation bean-validation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多