• 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);
            }
    }
  • 相关阅读:
    K8S 集群内部 POD 访问外部域名,偶尔不能完全解析问题排查
    01 Ceph 基础
    03 块存储
    02 Ceph 安装部署
    改变 input placeholder 颜色
    行内 外部 样式 引入图片
    row 不能设置宽度 高度 只能col设置
    SQL堂上作业八(子查询的扩展)
    SQL堂上作业四
    SQL堂上作业七
  • 原文地址:https://www.cnblogs.com/tangxuliang/p/9078946.html
Copyright © 2020-2023  润新知