springmvc中使用hibernate的校验框架validation

一、环境准备


hibernate的校验框架validation所需要的jar包:

springmvc中使用hibernate的校验框架validation


二、配置校验器


springmvc中使用hibernate的校验框架validation


三、将校验器注入到处理器适配器中


springmvc中使用hibernate的校验框架validation

四、在pojo中添加校验规则


springmvc中使用hibernate的校验框架validation

注解   运行时检查
@AssertFalse    被注解的元素必须为false    
@AssertTrue    被注解的元素必须为true    
@DecimalMax(value)    被注解的元素必须为一个数字,其值必须小于等于指定的最小值    
@DecimalMin(Value)    被注解的元素必须为一个数字,其值必须大于等于指定的最小值    
@Digits(integer=, fraction=)    被注解的元素必须为一个数字,其值必须在可接受的范围内    
@Future    被注解的元素必须是日期,检查给定的日期是否比现在晚    
@Max(value)    被注解的元素必须为一个数字,其值必须小于等于指定的最大值(百度上好多传阅复制写错了 最小值)    
@Min(value)    被注解的元素必须为一个数字,其值必须大于等于指定的最小值    
@NotNull    被注解的元素必须不为null    
@Null    被注解的元素必须为null    
@Past(java.util.Date/Calendar)    被注解的元素必须过去的日期,检查标注对象中的值表示的日期比当前早    
@Pattern(regex=, flag=)    被注解的元素必须符合正则表达式,检查该字符串是否能够在match指定的情况下被regex定义的正则表达式匹配    
@Size(min=, max=)    被注解的元素必须在制定的范围(数据类型:String, Collection, Map and arrays)    
@Valid    递归的对关联对象进行校验, 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验    
@CreditCardNumber    对信用卡号进行一个大致的验证    
@Email    被注释的元素必须是电子邮箱地址    
@Length(min=, max=)    被注解的对象必须是字符串的大小必须在制定的范围内    
@NotBlank    被注解的对象必须为字符串,不能为空,检查时会将空格忽略 ,也就是说,纯空格的String也是不符合规则的。   
@NotEmpty    被注释的对象不能为空(数据:String,Collection,Map,arrays)  也就是说,加了@NotEmpty的String类、Collection、Map、数组,是不能为null或者长度为0的(String、Collection、Map的isEmpty()方法)  
@Range(min=, max=)    被注释的元素必须在合适的范围内 (数据:BigDecimal, BigInteger, String, byte, short, int, long and 原始类型的包装类 )    
@URL(protocol=, host=, port=, regexp=, flags=)    被注解的对象必须是字符串,检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件

表 1. Bean Validation 中内置的 constraint
表 2. Hibernate Validator 附加的 constraint
Constraint 详细信息
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内


五、添加校验错误提示信息


在validationMessages.properties文件中配置校验错误提示信息:

springmvc中使用hibernate的校验框架validation


六、捕获校验错误信息并在页面显示


在controller中捕获错误信息并传到页面:

springmvc中使用hibernate的校验框架validation

页面接收并显示错误信息:

springmvc中使用hibernate的校验框架validation

七、分组校验


创建分组接口:

springmvc中使用hibernate的校验框架validationspringmvc中使用hibernate的校验框架validation

在校验规则中添加分组:

springmvc中使用hibernate的校验框架validation

在controller中指定分组:

springmvc中使用hibernate的校验框架validation