知识大全 框架Hibernate Validator 简介

Posted 长度

篇首语:追风赶月莫停留,平芜尽处是春山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 框架Hibernate Validator 简介相关的知识,希望对你有一定的参考价值。

框架Hibernate Validator 简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  用Annotations 给类或者类的属性加上约束(constraint) 在运行期检查属性值是很优雅的 Hibernate Validator就是这样的一个框架 该框架是十分容易的(就像参考文档中宣称的那样) 几乎没有什么学习曲线 Validator 是一个验证框架 不需要和Hibernate的其他部分绑定就可以使用 只要在你的项目中添加Hibernate annotations jar库就可以了 那么下面就让我们看看怎么使用吧 Person java 类/* * Created on Person java * @author */package test annotation validator;import hibernate validator Length;import hibernate validator Min;import hibernate validator Valid; //@Serializability  //测试自定义约束public class Person   private String name;  private int age;  private Address address;    public Person()     @Valid //注意此处  public Address getAddress()     return address;    public void setAddress(Address address)     this address = address;      @Min(value = )  public int getAge()     return age;    public void setAge(int age)     this age = age;      @Length(min = )  public String getName()     return name;    public void setName(String name)     this name = name;  

  Address java 类

  /* * Created on Address java * @author */package test annotation validator;import hibernate validator Length;import hibernate validator Max;import hibernate validator Min;public class Address   private String street;  private int num;    public Address()     @Min(value = )  @Max(value = )  public int getNum()     return num;    public void setNum(int num)     this num = num;      @Length(min = max = )  public String getStreet()     return street;    public void setStreet(String street)     this street = street;  

  上面是两个用 Validator Annotations 注释的 类 每个属性都用 约束限制了   下面看看测试的类吧:TestValidator java 类/* * Created on * @author icerain */package test annotation validator;import hibernate validator ClassValidator;import hibernate validator InvalidValue;public class TestValidator   public void test()     Address add = new Address();    add setNum( );    add setStreet( );        Person p = new Person();    p setAddress(add);    p setAge( );    p setName( ice );        /******************Test validator ********/    // 注意该处只验证了Person 为了说明 @Valid 注释的使用    ClassValidator<Person> classValidator = new ClassValidator<Person> (Person class);    InvalidValue[] validMessages = classValidator getInvalidValues(p);    for (InvalidValue value : validMessages)           System out println( InvalidValue 的长度是: + validMessages length        + 验证消息是: + value getMessage()         + PropertyPath 是: + value getPropertyPath()        + \\n\\t PropertyName 是: +value getPropertyName()        + Value 是: + value getValue()        + Bean 是: + value getBean()        + \\n\\t BeanClass 是: + value getBeanClass());          public static void main(String[] args)     new TestValidator() test();  

  程序的输出如下 InvalidValue 的长度是: 验证消息是: 必须大于等于 PropertyPath 是:age PropertyName 是: age Value 是: Bean 是: test annotation validator Person@dd b BeanClass 是:class test annotation validator PersonInvalidValue 的长度是: 验证消息是: 长度必须介于 与 之间 PropertyPath 是:name PropertyName 是: name Value 是: ice Bean 是: test annotation validator Person@dd b BeanClass 是:class test annotation validator PersonInvalidValue 的长度是: 验证消息是: 必须大于等于 PropertyPath 是:address num PropertyName 是: num Value 是: Bean 是: test annotation validator Address@ d BeanClass 是:class test annotation validator AddressInvalidValue 的长度是: 验证消息是: 长度必须介于 与 之间 PropertyPath 是:address street PropertyName 是: street Value 是: Bean 是: test annotation validator Address@ d BeanClass 是:class test annotation validator Address可以看出不满足约束的值都被指出了 同时该句: ClassValidator<Person> classValidator = new ClassValidator<Person> (Person class);我们只验证了 Person 在Person里面的Address的属性 由于有@Valid Annotations 所以 Address的相关属性也被机联验证了 如果 把@Valid Annotations 去掉 结果如下:InvalidValue 的长度是: 验证消息是: 必须大于等于 PropertyPath 是:age PropertyName 是: age Value 是: Bean 是: test annotation validator Person@ fef dBeanClass 是:class test annotation validator PersonInvalidValue 的长度是: 验证消息是: 长度必须介于 与 之间 PropertyPath 是:name PropertyName 是: name Value 是: ice Bean 是: test annotation validator Person@ fef dBeanClass 是:class test annotation validator Person可以看出 没有验证 Address 当然了 你还可以只验证一个属性 没有必要验证整个类 只需要在调用classValidator getInvalidValues(p age )方法时 加上你要验证的属性就可以了 如我们只想验证age 属性 把代码改为如下所示:InvalidValue[] validMessages = classValidator getInvalidValues(p age ); //只验证age 属性运行结果如下:InvalidValue 的长度是: 验证消息是: 必须大于等于 PropertyPath 是:age PropertyName 是: age Value 是: Bean 是: test annotation validator Person@ cbBeanClass 是:class test annotation validator Person只是验证了 age 属性 怎么样 很简单吧 关于 Hibernate Validator 内建的验证Annotations 大家可以看看 API 或者 参考文档(中文版我正在翻译中 请访问我的 Blog 获得最新信息) 如果你要写自己的约束呢 你不用担心 这也是很容易的 任何约束有两部分组成: [约束描述符 即注释]the constraint descriptor (the annotation) 和[约束validator 即 实现类] the constraint validator (the implementation class) 下面我们扩展Hibernate Test suit 中的一个Test 来讲解一下 首先: 要声明一个constraint descriptor 如下:package test annotation validator;import java lang annotation Documented;import static java lang annotation ElementType TYPE;import static java lang annotation ElementType FIELD;import static java lang annotation ElementType METHOD;import java lang annotation Retention;import static java lang annotation RetentionPolicy RUNTIME;import java lang annotation Target;import hibernate validator ValidatorClass;/** * Dummy sample of a bean level validation annotation * * @author Emmanuel Bernard */@ValidatorClass(SerializabilityValidator class)@Target(METHOD FIELD TYPE)@Retention(RUNTIME)@Documentedpublic @interface Serializability   int num() default ;   String message() default bean must be serialiable ; @ValidatorClass(SerializabilityValidator class) 指出了 constraint validator 类 @Target(METHOD FIELD TYPE)@Retention(RUNTIME)@Documented

  这几个我就不用解释了吧 Serializability 里面声明了一个 message 显示约束的提示信息 num 只是为了说明一个方面 在这里面没有实际用途用 然后就是 实现一个constraint validator 类 该类要实现Validator<ConstraintAnnotation> 这里是SerializabilityValidator java 如下:

  //$Id: SerializabilityValidator java v / / : : epbernard Exp $package test annotation validator;import java io Serializable;import hibernate validator Validator;/** * Sample of a bean level validator * * @author Emmanuel Bernard */public class SerializabilityValidator implements Validator<Serializability> Serializable   public boolean isValid(Object value)    //这里只是Validator 里面的 实现验证规则的 方法 value 是要验证的值     System out println( IN SerializabilityValidator isValid: +value getClass()+ : +value toString());     return value instanceof Serializable;    public void initialize(Serializability parameters)     // 在这里可以 取得 constraint descriptor 里面的属性 如上面我们声明的 num     System out println( IN SerializabilityValidator: parameters: + parameters num() );  

cha138/Article/program/Java/ky/201311/28573

相关参考

知识大全 Validator验证框架入门

Struts1.x系列教程(10):Validator验证框架入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Validator验证框架高级应用

Struts1.x系列教程(11):Validator验证框架高级应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 详解Struts中Validator验证框架的使用

详解Struts中Validator验证框架的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 深入了解Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 深入了解 Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!St

知识大全 浅谈Hibernate框架简述

浅谈Hibernate框架简述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在基于MVC设计模

知识大全 关于OJB和Hibernate框架的评议

关于OJB和Hibernate框架的评议  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  OJB和

知识大全 基于hibernate的开源通用查询框架-bba96

  bba框架当前版本包含  bbacore核心框架封装HibernateCriteria提供方便的查询以及分页支持查询参数  bbastruts基于Struts的开发框架依赖core提供便捷的CRU

知识大全 开源框架Hibernate3的新特性以及发展趋势

开源框架Hibernate3的新特性以及发展趋势  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 关于Hibernate开发框架中的各个包文件解释

关于Hibernate开发框架中的各个包文件解释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!