• @NotBlank为Hibernate Validator 常用注解用法 一般与@RequestBody @Valid 联合使用


      1. @Null   被注释的元素必须为 null    
      2. @NotNull    被注释的元素必须不为 null    
      3. @AssertTrue     被注释的元素必须为 true    
      4. @AssertFalse    被注释的元素必须为 false    
      5. @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
      6. @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
      7. @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
      8. @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
      9. @Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
      10. @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
      11. @Past   被注释的元素必须是一个过去的日期    
      12. @Future     被注释的元素必须是一个将来的日期    
      13. @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式   
      14. @NotBlank(message =)   验证字符串非null,且长度必须大于 @Email  被注释的元素必须是电子邮箱地址    
      15. @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
      16. @NotEmpty   被注释的字符串的必须非空   
      17. @Range(min=,max=,message=)  被注释的元素必须在合适的范围内
      18. @NotBlank    被注释的字符串的必须非空
      19. @URL(protocol=,host=, port=,regexp=, flags=)    被注释的字符串必须是一个有效的url
      20. @CreditCardNumber    被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性

        ————————————————
        原文链接:https://blog.csdn.net/qq_37101384/article/details/10082137
      21. 校验一个字段必须是合法的身份证号码
      22. 首先定义一个校验注解

        /**
         * 身份证校验
         */
        @Target({ ElementType.FIELD})
        @Retention(RetentionPolicy.RUNTIME)
        @Constraint(validatedBy = IdentityConstraintValidator.class)//用哪个校验器校验
        public @interface IdentityNo {
            String message() default "身份证号码不符合规则";
            Class<?>[] groups() default { };
            Class<? extends Payload>[] payload() default { };
        }
        校验逻辑,我们只需要去实现 ConstraintValidator 这个接口重写 isValid 方法即可

        /**
         * 身份证约束逻辑判断
         */
        public class IdentityConstraintValidator implements ConstraintValidator<IdentityNo, String> {
            @Override
            public boolean isValid(String value, ConstraintValidatorContext context) {
                return check(value);//返回身份证号码是否符合规则(自己实现校验逻辑)
            }
        }


        这样一来,我们自己的注解就定义好了,把它用在需要验证的字段上就可以了。

        @Data
        public class OrderRequest {
            //自己定义的注解
            @IdentityNo
            private String merchantCode;
            private String memberCode;
        }

         

        测试结果:

        {
            "path": "/order/submit",
            "error": "Bad Request",
            "message": "merchantCode:身份证号码不符合规则",
            "status": 400
        }

        hibernate-validator 配合统一异常处理简直是完美呀,这样绝大多数问题在前端传参的时候就能暴露出来了~~
  • 相关阅读:
    读財报:交易额增长111%的京东,为毛还是亏?
    HDU 1548 A strange lift 搜索
    linux两台server远程copy文件
    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离具体解释
    js事件防止冒泡
    LeetCode Rotate Array
    ARM架构授权和IP核授权有什么不一样啊?
    Linux系统结构 详解
    mount -o
    ARM开发板系统移植-----u-boot的编译
  • 原文地址:https://www.cnblogs.com/yangsanluo/p/16396125.html
Copyright © 2020-2023  润新知