知识大全 框架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相关参考
Struts1.x系列教程(10):Validator验证框架入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
Struts1.x系列教程(11):Validator验证框架高级应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
知识大全 详解Struts中Validator验证框架的使用
详解Struts中Validator验证框架的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
开发框架:深入了解StrutsValidator 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
开发框架:深入了解StrutsValidator 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!St
浅谈Hibernate框架简述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在基于MVC设计模
关于OJB和Hibernate框架的评议 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! OJB和
知识大全 基于hibernate的开源通用查询框架-bba96
bba框架当前版本包含 bbacore核心框架封装HibernateCriteria提供方便的查询以及分页支持查询参数 bbastruts基于Struts的开发框架依赖core提供便捷的CRU
开源框架Hibernate3的新特性以及发展趋势 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
关于Hibernate开发框架中的各个包文件解释 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!