2016-06-08 127 views
1

,我有follwing代碼做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")); 

任何想法?在此先感謝

回答

0

目前沒有辦法將根bean類插入到約束違規異常。通過EL,只有經過驗證的值和約束參數可用。您需要編寫自己的自定義MessageInterpolator。另請參閱Hibernate Validator online docs中有關消息插值的章節。

如果你想要把bean類到一個新的異常,因爲你似乎與你的的RuntimeException例如意味着,你可以叫ConstraintViolation.getRootBeanClass()以訪問bean類。