@Valid注解、@NotNull、@NotEmpty、@NotBlank注解详解以及其他类似的注解_@valid @notnull_Tan.]der的博客-CSDN博客

它是JSR 305(缺陷检查框架)的注解,是告诉编译器这个域不可能为空,当代码检查(静态检查)有空值时会给出一个风险警告
运行时不报任何警告,根据实际值得情况运行时可能出现空指针异常。

一、区别

@Valid:用于校验,用于验证注解是否符合要求,在变量中添加验证信息的要求
        当不符合要求时就会在方法中返回message 的错误提示信息
        
@NotNull:一般用在基本数据类型的非空校验上,在方法或构造函数的参数上使用,生成一个空值检查语句
         用于指明所修饰的参数,字段或方法的值不可以为null

@NotEmpty:用在集合类上,不能为null,并且长度必须大于0

@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0

二、案例

实体类代码案例:


public class ValidatorPojo {

// 非空判断
@NotNull(message = "id不能为空")
private Long id;

@NotBlank(message = "date不能为空")
private String date;

@NotEmpty(message = "dates不能为空")
private List<String> dates;

@NotNull //不能为空
@DecimalMin(value = "0.1") //最小值0.1元
@DecimalMax(value = "10000.00") //最大值10000元
private Double doubleValue = null;
}

controller代码案例:

必须在controller中加上@Valid,否则不会验证!


@RequestMapping(value = "/valid/validate")
@ResponseBody
public String validate(@Valid @RequestBody ValidatorPojo vp, BindingResult bindingResult) {

    //可写可不写
    if(bindingResult.hasErrors()){
            //用于获取相应字段上添加的message中的内容
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
        }
}

三、其他类似的注解


@Null 被注释的元素必须为null

@Email 被注释的元素必须是电子邮件地址
@Range 被注释的元素必须在合适的范围内

@AssertTrue  被注释的元素必须为true
@AssertFalse 被注释的元素必须为false

@Past   被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期

@Length 被注释的字符串的大小必须在指定的范围内
@Size(max,min) 被注释的元素的大小必须在指定的范围内
@Pattern(value) 被注释的元素必须符合指定的正则表达式

@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内


原网址: 访问
创建于: 2023-08-07 11:21:45
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论