Hibernate Validator自定义校验(附带实例)
Hibernate Validator 支持自定义校验规则。通过自定义校验规则,可以实现一些复杂、特殊的数据验证功能。
下面通过示例演示如何创建和使用自定义验证规则。
下面通过示例演示如何创建和使用自定义验证规则。
声明一个自定义校验注解
首先,定义新的校验注解 @CustomAgeValidator,示例代码如下:@Min(value = 18,message = "年龄最小不能小于18") @Max(value = 120,message = "年龄最大不能超过120") @Constraint(validatedBy = {}) //不指定校验器 @Documented @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface CustomAgeValidator { String message() default "年龄大小必须大于18并且小于120"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }在上面的示例中,我们创建了 CustomAgeValidator 自定义注解,用于自定义年龄的数据校验规则。
使用自定义校验注解
创建自定义校验注解 CustomAgeValidator 之后,在 User 的 age 属性上使用自定义组合注解,示例代码如下:@public class User { @NotBlank(message = "姓名不允许为空!") @Length(min = 2,max = 10,message = "姓名长度错误,姓名长度2-10!") private String name; @CustomAgeValidator private int age; @NotBlank(message = "地址不能为空!") private String address; @Pattern(regexp = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$", message = "手机号格式错误") private String phone; @Email(message = "邮箱格式错误") private String email; // 省略get和set }在上面的示例中,我们在需要做特殊校验的 age 字段上添加 @CustomAgeValidator 自定义注解,这样 age 字段就会使用我们自定义的校验规则。