springmvc中使用hibernate的校验框架validation
一、环境准备
hibernate的校验框架validation所需要的jar包:
二、配置校验器
三、将校验器注入到处理器适配器中
四、在pojo中添加校验规则
注解 运行时检查 @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文件中配置校验错误提示信息:
六、捕获校验错误信息并在页面显示
在controller中捕获错误信息并传到页面:
页面接收并显示错误信息:
七、分组校验
创建分组接口:
在校验规则中添加分组:
在controller中指定分组: