zoukankan      html  css  js  c++  java
  • hibernate中validate的使用(转)

    原文链接:http://blog.csdn.net/xing_sky/article/details/8484551

    首先是要加入下面两个包

    hibernate-validator-4.1.0.Final.jar
     validation-api-1.0.0.GA.jar

    如果在验证不通过的时候进行了添加、更新或删除操作的时候,则会抛出javax.validation.ConstraintViolationException异常

    下面是测试用的类

    Model2:

    Java代码  

    import  javax.persistence.Entity;  

    import  javax.persistence.GeneratedValue;  

    import  javax.persistence.GenerationType;  

    import  javax.persistence.Id;  

    import  javax.persistence.ManyToOne;  

    import  javax.persistence.Table;  

    import  javax.persistence.TableGenerator;  

    import  javax.validation.Valid;  

    import  javax.validation.constraints.Max;  

    import  javax.validation.constraints.Min;  

    import  javax.validation.constraints.NotNull;  

    import  javax.validation.constraints.Size;  

      

    import  org.hibernate.validator.constraints.Email;  

    import  org.hibernate.validator.constraints.URL;  

      

    @Entity   

    @Table (name= "t_Model2" )  

    @TableGenerator (name= "mytable" ,initialValue= 1 ,allocationSize= 1 )  

    public   class  Model2 {  

      

        private   int  id;  

        private  String name;  

        private  String address;  

        private  String phoneNumber;  

        private  String email;  

        private   int  age;  

        private  Model3 model3;  

        private  String url;  

      

        @Id   

        @GeneratedValue (generator= "mytable" ,strategy=GenerationType.TABLE)  

        public   int  getId() {  

            return  id;  

        }  

      

        public   void  setId( int  id) {  

            this .id = id;  

        }  

      

        @NotNull (message= "姓名不能为空!" )  

        public  String getName() {  

            return  name;  

        }  

      

        public   void  setName(String name) {  

            this .name = name;  

        }  

      

        @NotNull (message= "地址不能为空!" )  

        public  String getAddress() {  

            return  address;  

        }  

      

        public   void  setAddress(String address) {  

            this .address = address;  

        }  

      

        @Size (max= 11 ,min= 11 ,message= "长度只能为11位!" )  

        public  String getPhoneNumber() {  

            return  phoneNumber;  

        }  

      

        public   void  setPhoneNumber(String phoneNumber) {  

            this .phoneNumber = phoneNumber;  

        }  

      

        @Email (message= "email地址无效!" )  

        @NotNull (message= "email地址不能为空!" )  

        public  String getEmail() {  

            return  email;  

        }  

      

        public   void  setEmail(String email) {  

            this .email = email;  

        }  

      

        @NotNull (message =  "Model3不能为空!" )  

        @Valid   

        @ManyToOne   

        public  Model3 getModel3() {  

            return  model3;  

        }  

      

        public   void  setModel3(Model3 model3) {  

            this .model3 = model3;  

        }  

      

        @Min (value= 18 ,message= "必须年满18岁!" )  

        @Max (value= 30 ,message= "年龄不能大于30岁!" )  

        public   int  getAge() {  

            return  age;  

        }  

      

        public   void  setAge( int  age) {  

            this .age = age;  

        }  

      

        @URL (message= "无效的URL地址" )  

        @NotNull (message =  "URL不能为空!" )  

        public  String getUrl() {  

            return  url;  

        }  

      

        public   void  setUrl(String url) {  

            this .url = url;  

        }  

          

    }  

     Model3:

    Java代码  http://haohaoxuexi.iteye.com/images/icon_star.png

    import  javax.persistence.Entity;  

    import  javax.persistence.GeneratedValue;  

    import  javax.persistence.Id;  

    import  javax.persistence.Table;  

    import  javax.validation.constraints.NotNull;  

      

    @Entity   

    @Table (name= "t_Model3" )  

    public   class  Model3 {  

      

        private   int  id;  

          

        private  String name;  

      

        @Id   

        @GeneratedValue   

        public   int  getId() {  

            return  id;  

        }  

      

        public   void  setId( int  id) {  

            this .id = id;  

        }  

      

        @NotNull (message= "model3的名称不能为空!" )  

        public  String getName() {  

            return  name;  

        }  

      

        public   void  setName(String name) {  

            this .name = name;  

        }  

          

    }  

    Test类:

    Java代码  

    import  org.springframework.context.ApplicationContext;  

      

    import  com.tiantian.test.model.Model2;  

    import  com.tiantian.test.service.Model2Service;  

    import  com.tiantian.test20110430.util.Util;  

      

    public   class  Test1 {  

      

        public   static   void  main(String args[]) {  

            ApplicationContext context = Util.getContext();  

            Model2Service service = context.getBean(Model2Service.class );  

            Model2 model = new  Model2();  

            model.setName("hello" );  

            model.setEmail("testHibernateValidate@sohu.com" );  

            model.setAddress("湖南长沙" );  

            model.setPhoneNumber("15012345678" );  

      

            String result = Util.validateModel(model);// 返回的验证结果,验证结果就是一个字符串,如果有错误的话则该字符串的长度大于0   

            System.out.println(result);  

            if  (result.length() ==  0 ) // 验证不通过的时候就不添加   

                service.add(model);  

      

        }  

      

    }  

     上面用到的Util类:

    Java代码  

    import  Java.util.Iterator;  

    import  java.util.Set;  

      

    import  javax.validation.ConstraintViolation;  

    import  javax.validation.Validation;  

    import  javax.validation.Validator;  

      

    import  org.springframework.context.ApplicationContext;  

    import  org.springframework.context.support.ClassPathXmlApplicationContext;  

      

    public   class  Util {  

      

        private   static  ApplicationContext context =  new  ClassPathXmlApplicationContext( "applicationContext.xml" );  

          

        public   static  ApplicationContext getContext() {  

            return  context;  

        }  

          

        public   static  String validateModel(Object obj) { //验证某一个对象   

              

            StringBuffer buffer = new  StringBuffer( 64 ); //用于存储验证后的错误信息   

              

            Validator validator = Validation.buildDefaultValidatorFactory()  

                    .getValidator();  

      

            Set<ConstraintViolation<Object>> constraintViolations = validator  

                    .validate(obj);//验证某个对象,,其实也可以只验证其中的某一个属性的   

      

            Iterator<ConstraintViolation<Object>> iter = constraintViolations  

                    .iterator();  

            while  (iter.hasNext()) {  

                String message = iter.next().getMessage();  

                buffer.append(message);  

            }  

            return  buffer.toString();  

        }  

          

    }  

    下面是一些主要的注解:

    Java代码  

    @AssertTrue   //用于boolean字段,该字段只能为true   

    @AssertFalse //该字段的值只能为false   

    @CreditCardNumber //对信用卡号进行一个大致的验证   

    @DecimalMax //只能小于或等于该值   

    @DecimalMin //只能大于或等于该值   

    @Digits (integer= 2 ,fraction= 20 ) //检查是否是一种数字的整数、分数,小数位数的数字。   

    @Email //检查是否是一个有效的email地址   

    @Future //检查该字段的日期是否是属于将来的日期   

    @Length (min=,max=) //检查所属的字段的长度是否在min和max之间,只能用于字符串   

    @Max //该字段的值只能小于或等于该值   

    @Min //该字段的值只能大于或等于该值   

    @NotNull //不能为null   

    @NotBlank //不能为空,检查时会将空格忽略   

    @NotEmpty //不能为空,这里的空是指空字符串   

    @Null //检查该字段为空   

    @Past //检查该字段的日期是在过去   

    @Size (min=, max=) //检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等   

    @URL (protocol=,host,port) //检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件   

    @Valid //该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,   

            //这样在检查当前对象的同时也会检查该字段所引用的对象   

  • 相关阅读:
    HDU 5313 bitset优化背包
    bzoj 2595 斯坦纳树
    COJ 1287 求匹配串在模式串中出现的次数
    HDU 5381 The sum of gcd
    POJ 1739
    HDU 3377 插头dp
    HDU 1693 二进制表示的简单插头dp
    HDU 5353
    URAL 1519 基础插头DP
    UVA 10294 等价类计数
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6224469.html
Copyright © 2011-2022 走看看