首页 > 编程笔记 > Java笔记 阅读:1

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 字段就会使用我们自定义的校验规则。

相关文章