我开始使用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 :(得分:0)
目前无法将根bean类插入约束违例异常。通过EL,只有经过验证的值和约束参数可用。您需要编写自己的自定义MessageInterpolator
。另请参阅Hibernate Validator online docs中有关消息插值的章节。
如果你想将bean类放入一个新的异常,就像你似乎暗示你的 RuntimeException 一样,你只需要调用ConstraintViolation.getRootBeanClass()
来访问bean类。 / p>