}
publicbooleanisValid(Stringstring,
ConstraintValidatorContextconstraintValidatorContext){
if(string==null)returnfalse;
elseif(string.length()<1)returnfalse;
elsereturntrue;

}
}
至此,一个可以声明并使用的约束注解已经定义完毕,清单 7 将给出该约束注解在实际程序中的使用。为节省篇幅,这里只给出针对清单 1 的增加和修改内容,未给出全部的示例代码,您可以在本文的附录中获得全部的代码。
清单 7:
首先在清单1中的类Employee中加入字段company和相应的getter和setter方法:
@NotEmpty
privateStringcompany;
然后在main函数中加入如下代码清单:
Stringcompany=newString();
employee.setCompany(company);
再次运行该程序,输出结果为:
Theidofemployeecannotbenull
thisstringmaybeempty
Thesizeofemployee'snamemustbetween1and10
约束的声明和验证流程
本文第二大部分介绍了如何定义约束注解和验证器,本章主要介绍如何在 Java Bean 中应用存在定义的约束注解,主要包括两部分:一是约束的声明;二是约束的验证流程。
在需要进行约束的目标元素前面用注解的方式即可声明约束,这意味着该目标元素必须满足该约束的验证条件。如清单 13 即在字段 id 上声明了约束 @NotNull:
清单 13:
@NotNull(message="Theidofemployeecannotbenull")
privateIntegerid;
该目标元素在具体实例中被赋后,Bean Validation 就会调用相关的流程进行验证。具体使用方式可以参见清单 14 所示,其中所涉及的接口将在本文第四大部分详细介绍。
清单 14:
ValidatorFactoryvf=Validation.buildDefaultValidatorFactory();
Validatorvalidator=vf.getValidator();
Set<ConstraintViolation<Employee>>set=validator.validate(JavaBeanInstance);
for(ConstraintViolation<Employee>constraintViolation:set){
System.out.println(constraintViolation.getMessage());
}
Bean Validation 规范对 Java Bean 的验证流程如下:在实际使用中调用 Validator.validate(JavaBeanInstance) 方法后,Bean Validation 会查找在 JavaBeanInstance上所有的约束声明,对每一个约束调用对应的约束验证器进行验证,最后的结果由约束验证器的 isValid 方法产生,如果该方法返回 true,则约束验证成功,否则验证失败。验证失败的约束将产生约束违规对象(ConstraintViolation 的实例)并放到约束违规列表中。验证完成后所有的验证失败信息均能在该列表中查找并输出。
前提条件
Bean Validation 规范规定在对 Java Bean 进行约束验证前,目标元素必须满足以下条件:
如果验证的是属性(getter 方法),那么必须遵从 Java Bean 的命名习惯(JavaBeans 规范);
静态的字段和方法不能进行约束验证;
约束适用于接口和基类;
约束注解定义的目标元素可以是字段、属性或者类型等;
可以在类或者接口上使用约束验证,它将对该类或实现该接口的实例进行状态验证;
字段和属性均可以使用约束验证,但是不能将相同的约束重复声明在字段和相关属性(字段的 getter 方法)上。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-47803-3.html
是质量监督