Hibernate Validator基本用法

一、准备工作

Spring文档:https://docs.spring.io/spring/docs/5.0.1.RELEASE/
JSR规范:http://beanvalidation.org/1.1/spec/
Hibernate Validator文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/
Maven依赖:
https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator
https://mvnrepository.com/artifact/org.glassfish/javax.el

<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.2.Final</version>
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version>
</dependency>

二、验证类

xml配置:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

注解配置:

@Bean
public LocalValidatorFactoryBean getValidator() {
    return new LocalValidatorFactoryBean();
}

三、Hibernate Validator Constraint 注解

Bean Validation 中内置的 constraint:

@Null   被注释的元素必须为 null    
@NotNull    被注释的元素必须不为 null    
@AssertTrue     被注释的元素必须为 true    
@AssertFalse    被注释的元素必须为 false    
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
@Past   被注释的元素必须是一个过去的日期    
@Future     被注释的元素必须是一个将来的日期    
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式    

Hibernate Validator 附加的 constraint

@NotBlank(message =)   验证字符串非null,且长度必须大于0    
@Email  被注释的元素必须是电子邮箱地址    
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
@NotEmpty   被注释的字符串的必须非空    
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内 

四、验证

@Autowired
LocalValidatorFactoryBean localValidatorFactoryBean;

DataBinder验证:

public void checkUser() {
    UserEntity userEntity = new UserEntity("txls",919,001);

    DataBinder dataBinder = new DataBinder(userEntity);
    dataBinder.setValidator(this.localValidatorFactoryBean);
    dataBinder.validate();

    BindingResult bindingResult = dataBinder.getBindingResult();
    if(bindingResult.hasErrors()) {
        List<ObjectError> list =  bindingResult.getAllErrors();
        for(ObjectError objectError : list)
            System.out.println(objectError.getCode() + "_" + objectError.getDefaultMessage());
    } else {
        System.out.println(userEntity);
    }
}

localValidatorFactoryBean验证:

public void checkUser() {
    Set<ConstraintViolation<UserEntity>> constraintViolationSet =   this.localValidatorFactoryBean.validate(userEntity);
        if(constraintViolationSet.size()>0) {
            for(ConstraintViolation<UserEntity> constraintViolation : constraintViolationSet)
                System.out.println(constraintViolation.getMessage());
        } else {
            System.out.println(userEntity);
        }
}
原文地址:https://www.cnblogs.com/tangxuliang/p/9078946.html