• java validation validator 验证器


    实体字段校验 @NotNull、@NotEmpty、@NotBlank
    1.@NotNull

    不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制

    2.@NotEmpty

    不能为 null,且长度必须大于 0,一般用在集合类上或者数组上

    3.@NotBlank

    只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符

     

    注意在使用 @NotBlank 等注解时,一定要和 @valid 一起使用,否则 @NotBlank 不起作用。
    一个 BigDecimal 的字段使用字段校验标签应该为 @NotNull。
    在使用 @Length 一般用在 String 类型上可对字段数值进行最大长度限制的控制。
    在使用 @Range 一般用在 Integer 类型上可对字段数值进行大小范围的控制。

    @RequestMapping("/hello")
    @RestController
    @Api(tags = "HelloWorld 入口")
    public class HelloWorld {
    
        @GetMapping("/world")
        @ApiOperation(value = "helloWorld")
        public String helloWorld() {
            return "hello world!";
        }
    
        @PostMapping("/test/param")
        @ApiOperation(value = "testParam")
        public BaseResponse<String> testParam(
                @Valid @RequestBody BaseRequest baseRequest
        ) {
            return BaseResponse.successResponse("参数校验成功");
        }
    
        @ApiOperation(value = "testOrderParam")
        @PostMapping("/test/order")
        public BaseResponse<String> testOrderParam(
                @Validated @RequestBody OrderRequest baseRequest
        ) {
            return BaseResponse.successResponse("参数校验成功");
        }
    }
    
    上面源码可以看到,testParam接口和testOrderParam两个接口使用的注解不一样,一个是@Valid、另一个是@Validated,两个稍有区别,前者使得当前对象内属性校验生效,如果包含对象属性,则对象属性自身的属性校验无法生效,而后者注释的对象,对象内部配合@Valid可以使得对象内部的对象属性的属性校验规则生效。

    总结一下 @Validated 和 @Valid 在嵌套验证功能上的区别:

    @Validated: 用在方法入参上无法单独提供嵌套验证功能。不能用在成员属性(字段)上,也无法提示框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。

    @Valid: 用在方法入参上无法单独提供嵌套验证功能。能够用在成员属性(字段)上,提示验证框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。

     

    Bean Validation规范中包含的22个注解,也就是validation-api(jakarta.validation-api)实现的注解:

    每个注解都有message,groups,payload这三个属性,这是Bean Validation规范的要求。下表还列出了每个注解自有的一些属性。

     hibernate-validator额外实现的注解:

    注解的可以到org.hibernate.validator.constraints包下面自行查看,这里仅列举几个常用的注解。

    校验实现可以到org.hibernate.validator.internal.constraintvalidators包下面自行查看。其中bv包下是对javax.validation下注解的实现,hv包下是对org.hibernate.validator下注解的实现。

  • 相关阅读:
    Android_EditText 密码框默认是小圆点 怎么改成其它的(*)?
    Android_view的生命周期
    Android_对android虚拟机的理解,包括内存管理机制垃圾回收机制。dalvik和art区别
    Android_触摸事件传递机制
    Android_OnLowMemory和OnTrimMemory
    Android_ FragmentTabHost切换Fragment时避免重复加载UI
    位运算&字节运算
    C#编程简短总结
    IOS随机随学
    计算机图形学
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/15364877.html
Copyright © 2020-2023  润新知