【问题标题】:Validation Bean, Exception Message验证 Bean,异常消息
【发布时间】:2016-06-08 13:22:15
【问题描述】:

我开始使用 bean 验证,我有以下代码来进行 bean 验证:

 class Personne {

     void validate(Class<?>... groupes) {

            Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
            Set<ConstraintViolation<Personne>> violation = validator.validate(this, groupes);
            if (violation.size() > 0) {
                Set<String> violationMessages = new HashSet<String>();

                for (ConstraintViolation<Personne> violations : violation) {
                    violationMessages.add("Valeur '" +
                            violations.getInvalidValue()+
                            "' invalid for '"+
                            violations.getRootBeanClass().getSimpleName()+
                            "."+violations.getPropertyPath()
                            + "' : "+
                             violations.getMessage());
                }

                throw new RuntimeException(" class in not valid:  \n" + StringUtils.join(violationMessages, "\n"));
            }
        }
}

class Eleve extends Personne  
{   
     @NotNull
     String nom 
     @NotNull 
     String prenom 
  } 

class Prof extends Personne  
{   
     @NotNull
     String nom 
     @NotNull 
     String prenom 

  }

我想在异常错误的错误消息中添加正在验证的 bean 的名称类,如下所示:

 throw new RuntimeException(getRootBeanClass().getSimpleName() + "is not valid:  \n" + StringUtils.join(violationMessages, "\n"));

有什么想法吗?提前致谢

【问题讨论】:

    标签: groovy bean-validation


    【解决方案1】:

    目前没有办法将根 bean 类插入到约束冲突异常中。通过 EL,只有验证值和约束参数可用。您需要编写自己的自定义MessageInterpolator。另请参阅 Hibernate Validator online docs 中有关消息插值的章节。

    如果您想将 bean 类放入一个新的异常中,正如您在 RuntimeException 示例中所暗示的那样,您只需调用 ConstraintViolation.getRootBeanClass() 即可访问 bean 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2014-07-15
      相关资源
      最近更新 更多