美文网首页
使用javax.validation.constraints包的

使用javax.validation.constraints包的

作者: 放开好人 | 来源:发表于2021-03-08 21:08 被阅读0次

    一、导包

    <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.1.0.Final</version>
        </dependency>
    

    二、使用

    class A{
            @NotNull(message = "字段值不能为空,Map 和 Array 对象不能是 null, 但可以是空集(size = 0)")
            private String name;
             @NotEmpty(message = "Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0")
            private String name1;
             @NotBlank(message = "String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0")
            private String name2;
            @Max(value = 20,message = "最大长度为20")
            private String address;
            @NotNull
            @Size(max=10,min=5,message = "字段长度要在5-10之间")
            private String fileName;
            @Pattern(regexp = "正则表达式",message = "不满足正则表达式")
            private String email;
            @AssertTrue(message = "字段为true才能通过")
            private boolean isSave;
            @Future(message = "时间在当前时间之后才可以通过")
            private Date date;
    

    三、controller层

    1. 开启校验功能@Valid,校验错误后有默认的响应(框架配置文件中设置)
    2. 给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果。
    3. 按需封装自己的返回数据。
        @RequestMapping("/save")
        //@RequiresPermissions("product:brand:save")
        public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
            if(result.hasErrors()){
                Map<String,String> map = new HashMap<>();
                //获取所有错误信息
                result.getFieldErrors().forEach((item)->{
                    //获取单个错误提示
                    String message = item.getDefaultMessage();
                    //获取错误属性名
                    String field = item.getField();
                    map.put(field,message);
                });
                R.error(400,"提交的数据不合法").put("data",map);
            }else{
                //业务处理
                brandService.save(brand);
            }
            return R.ok();
        }
    

    四、非空详细介绍

    1. @NotNull

    对象不是null就行,其他的不保证

    2. @NotEmpty
    @NotNull    
    @Size(min = 1) 
    

    @NotEmpty除了@NotNull之外还需要保证@Size(min=1),这也是一个注解,这里规定最小长度等于1,也就是类似于集合非空。

    3. @NotBlank
    @NotNull    
    @Constraint(validatedBy = {NotBlankValidator.class})  
    if ( charSequence == null ) {  //curious   
      return true;     
    }     
    return charSequence.toString().trim().length() > 0; 
    

    当一个string对象是null时方法返回true,但是当且仅当它的trimmed length等于零时返回false。即使当string是null时该方法返回true,但是由于@NotBlank还包含了@NotNull,所以@NotBlank要求string不为null。

    五、常用标签

    @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(value) 被注释的元素必须符合指定的正则表达式。
    @Email 被注释的元素必须是电子邮件地址
    @Length 被注释的字符串的大小必须在指定的范围内
    @NotEmpty  被注释的字符串必须非空
    @Range  被注释的元素必须在合适的范围内
    

    相关文章

      网友评论

          本文标题:使用javax.validation.constraints包的

          本文链接:https://www.haomeiwen.com/subject/xxrmqltx.html