概述
(1) Apache Commons Validator
Commons -Validator包用来把验证规则程序提取出来,以供重复使用。这个包可以使用在Struts中,也可以独立的应用在任何其它的应用中。用户可以通过 java类的方式自定义验证方法,也可以在配置文件中通过正则表达式配置验证方法。它不但支持服务器端的验证,客户端的验证也支持,具体需要使用tag把 相应的js方法写入相应的页面中。
配置示例:
- <form-validation>
- <global>
- <constant>
- <constant-name>验证方法的标志名</constant-name>
- <constant-value>正则表达式</constant-value>
- </constant>
- <validatorname="这个验证方法的标志名,供下面的depends调用"
- classname="这个验证方法在哪个类中,为类全名"
- method="验证方法的名称"
- methodParams="这个验证方法需要的参数类型,依次以逗号格开,为类全名"
- depends="基于什么验证之上,可以为多个值,以逗号格开,值为方法的标志名"
- jsFunction="js的方法全名,格式为文件路径.方法名。文件路径以点隔开,
- 如果不填,默认为org.apache.commons.validator.javascript.xxxx"
- msg="对应于properties文件中的一条,作为不通过验证时返回的信息"/>
- </global>
- <formsetlanguage="语言"country="城市"variant="方言?">
- <constant>
- <constant-name>验证方法的标志名</constant-name>
- <constant-value>正则表达式</constant-value>
- </constant>
- <formname="bean对象名称">
- <fieldproperty="bean中的属性名"depends="需要什么样的验证,可以为多个值,以逗号格开,值为方法的标志名">
- <argname="变量名"key="properties文件的key,或者来自Var的name"resource="是/否来自资源文件"/>
- <var>
- <var-name>变量名</var-name>
- <var-value>变量值</var-value>
- </var>
- </field>
- </form>
- </formset>
- </form-validation>
官方地址:http://commons.apache.org/validator/index.html
参考:http://hi.baidu.com/pengwx/blog/item/db85b84b33d785f183025ce8.html
(2) iScreen
iScreen是一个Java对象验证框架。它的思想与Apache Jakarta的commons-validator项目相似,验证规则使用XML进行配置但也支持其它配置类型。它比commons-validator更强大,灵活,易于使用。
示例:
- <validation-rootnamespace="my.project">
- <validation-setid="RegistrationInfoSet"default-resource="theResource">
- <!--First,let'svalidatetheuser'sfirstname.-->
- <use-validatorref="org.iscreen.StringValidator">
- <mappingfrom="firstName"/>
- <labelkey="label.FirstName"/>
- <constraintproperty="minLength">1</constraint>
- <constraintproperty="maxLength">25</constraint>
- </use-validator>
- <!--Nowthelastname.-->
- <use-validatorref="org.iscreen.StringValidator">
- <mappingfrom="lastName"/>
- <labelkey="label.LastName"/>
- <constraintproperty="minLength">1</constraint>
- <constraintproperty="maxLength">30</constraint>
- </use-validator>
- <!--Makesurethattheregistrationdateisafterthebirthdate.-->
- <use-validatorref="org.iscreen.DateRangeValidator">
- <mappingfrom="birthDate"to="from"/>
- <mappingfrom="registrationDate"to="to"/>
- <labelkey="label.RegistrationDate"/>
- <failureproperty="failure"key="failure.RegistrationDate"/>
- </use-validator>
- <!--Checktheemailaddress.-->
- <use-validatorref="org.iscreen.StringValidator">
- <mappingfrom="emailAddress"/>
- <labelkey="label.EmailAddress"/>
- <constraintproperty="minLength">1</constraint>
- <constraintproperty="maxLength">256</constraint>
- </use-validator>
- </validation-set>
- <resourceid="theResource">
- <resource-filefile="messages"/>
- </resource>
- </validation-root>
官方:http://i-screen.org/docs/index.html
(3) Java对象验证框架OVal
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java 语言、JavaScript 、Groovy 、BeanShell 等进行规则的编写。
示例:
- privatestaticclassTestEntity
- {
- @Min(1960)
- privateintyear=1977;
- @Range(min=1,max=12)
- privateintmonth=2;
- @ValidateWithMethod(methodName="isValidDay",parameterType=int.class)
- privateintday=31;
- privatebooleanisValidDay(intday)
- {
- GregorianCalendarcal=newGregorianCalendar();
- cal.setLenient(false);
- cal.set(GregorianCalendar.YEAR,year);
- cal.set(GregorianCalendar.MONTH,month-1);
- cal.set(GregorianCalendar.DATE,day);
- try{
- cal.getTimeInMillis();//throwsIllegalArgumentException
- }catch(IllegalArgumentExceptione){
- returnfalse;
- }
- returntrue;
- }
- }
eSciDoc
https://www.escidoc.org/
SaferJava
http://code.google.com/p/saferjava/
Pinky
https://github.com/pk11/pinky
JProvocateur
http://www.jprovocateur.org/
NexOpen
http://nexopen.sourceforge.net/
gdv.xport
http://repository.agentes.de/gdv/gdv-xport/site/
suz-lab-gae
http://code.google.com/p/suz-lab-gae/
Cubby Simple Web Application Framework
http://cubby.seasar.org/20x/cubby-oval/index.html
Metawidget
http://metawidget.org
Struts 2 OVal Plug-in
http://cwiki.apache.org/confluence/display/S2PLUGINS/OVal+Plugin
Play! Framework
http://www.playframework.org/
Cayenne annotations
http://sourceforge.net/projects/cayannotations/
jsfatwork
http://code.google.com/p/jsfatwork/
mtn4java
http://www.mvnrepository.com/artifact/org.criticalsection.mtn4java/mtn4java/
Polyforms
http://code.google.com/p/polyforms/
rsser
http://code.google.com/p/rsser/
saetc
http://code.google.com/p/saetc/
ultimate-roundtrip
http://code.google.com/p/ultimate-roundtrip/
官方:http://oval.sourceforge.net/
(4) JaValid
JaValid是一个基于标注的验证框架,它允许用户标注Java类来引入验证。JaValid可以应用于任何类型的Java应用程序
示例:
- packageorg.javalid.examples.core.example01;
- importorg.javalid.annotations.core.JvGroup;
- importorg.javalid.annotations.core.ValidateDefinition;
- importorg.javalid.annotations.validation.MinLength;
- importorg.javalid.annotations.validation.NotEmpty;
- importorg.javalid.annotations.validation.NotNull;
- @ValidateDefinition
- publicclassEmployee{
- privateStringfirstName;
- privateStringlastName;
- publicEmployee(){
- }
- publicvoidsetFirstName(StringfirstName){
- this.firstName=firstName;
- }
- @JvGroup(groups={"group01"})
- @NotNull
- publicStringgetFirstName(){
- returnfirstName;
- }
- publicvoidsetLastName(StringlastName){
- this.lastName=lastName;
- }
- @JvGroup(groups={"group01"})
- @NotEmpty
- @MinLength(length=4)
- publicStringgetLastName(){
- returnlastName;
- }
- }
- importjava.util.List;
- importorg.javalid.core.AnnotationValidator;
- importorg.javalid.core.AnnotationValidatorImpl;
- importorg.javalid.core.ValidationMessage;
- publicclassTest{
- publicTest(){
- }
- publicstaticvoidmain(String[]args){
- AnnotationValidatorvalidator=null;
- List<validationmessage>messages=null;
- Employeeemp=null;
- //Createsadefaultcorevalidatorusingdefaultconfiguration
- validator=newAnnotationValidatorImpl();
- //Createouremployee,asvalid(noerrorsshouldbefound)
- emp=newEmployee();
- emp.setFirstName("Martijn");
- emp.setLastName("Reuvers");
- //Validateouremployee
- messages=validator.validateObject(emp,"group01");
- System.out.println("Employeeerrors="+messages.size());//Shouldprint0
- //Makeouremployeeinvalid
- emp.setFirstName(null);//NotNullshouldgetfired
- messages=validator.validateObject(emp,"group01");
- System.out.println("Employeeerrors="+messages.size());//Shouldprint1
- System.out.println("Message="+messages.get(0));//ShouldprintaNotNullmessageerror
- //Makeouremployeeevenmoreinvalid
- emp.setLastName("");
- messages=validator.validateObject(emp,"group01");
- System.out.println("Employeeerrors="+messages.size());//Shouldprint2
- System.out.println("Messages="+messages);//ShouldprintaNotNull/NotEmptymessageerror
- //SetfirstNamefine,lastNametooshortlengthbutnotempty
- emp.setFirstName("Martijn");
- emp.setLastName("Re");
- messages=validator.validateObject(emp,"group01");
- System.out.println("Employeeerrors="+messages.size());//Shouldprint1
- System.out.println("Messages="+messages);//ShouldprintaMinLengthmessageerror
- //Finally,wronggroupspecified,validatesnothing,asitsnotinthe@JvGroupanywhere
- messages=validator.validateObject(emp,"invalidGroup");
- System.out.println("Employeeerrors="+messages.size());//Shouldprint0
- }
- }
这个相对功能少些,好像目前不支持配置,纯注解。
官方:http://www.javalid.org/
最后
以上就是无奈发卡为你收集整理的java几种对象验证框架的全部内容,希望文章能够帮你解决java几种对象验证框架所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复