SpringBoot系列(5)——表单验证

前言:

/**
     * 添加一个学生
     */
    @PostMapping("/students")
    public Student studentAdd(@RequestParam("name") String name,
                             @RequestParam("age") Integer age){
        Student student=new Student();
        student.setName(name);
        student.setAge(age);
        return stuentRepository.save(student);
    }

如上代码,添加学生的方法须要接受两个参数:name和age,但现实业务状况下,一个实体类中极可能有不少属性,新增记录的时候就要传入不少参数,因此更为简便的方式是传入一个pojo对象来代替一堆属性java

那么如何进行数据校验呢?好比,咱们须要限制学生年龄不得小于10岁,该如何进行操做呢?git

1. 首先,在待校验字段上加上 @Min 注解,value属性表明最小的年龄,message属性表明校验错误时返回的信息:正则表达式

2. 在方法入参处使用 @Valid 注解修饰,代表该入参是待校验的,同时,方法入参再加上BindingResult,该对象用来保存错误信息:app

/**
     * 添加一个学生
     */
    @PostMapping("/students")
    public Student studentAdd(@Valid Student student , BindingResult result){
        if (result.hasErrors()){
            System.out.println(result.getFieldError().getDefaultMessage());
            return null; 
        }
        student.setName(student.getName());
        student.setAge(student.getAge());
        return stuentRepository.save(student);
    }

3. 在执行方法体以前判断BindingResult中是否含有错误,如果校验出错,则打印错误并返回空值(退出程序)spa

写在最后:

其余的表单验证注解:.net

@NotEmpty 不为null,且长度大于0
@Length 示例:@Length(min=6, message="密码长度不能少于6位")
@null           验证对象是否为空
@notnull     验证对象是否为非空
@asserttrue   验证 boolean 对象是否为 true
@assertfalse   验证 boolean 对象是否为 false
@min           验证 number 和 string 对象是否大等于指定的值
@max           验证 number 和 string 对象是否小等于指定的值
@decimalmin   验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax   验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size           验证对象(array,collection,map,string)长度是否在给定的范围以内
@digits       验证 number 和 string 的构成是否合法
@past           验证 date 和 calendar 对象是否在当前时间以前
@future       验证 date 和 calendar 对象是否在当前时间以后
@pattern     验证 string 对象是否符合正则表达式的规则
@Email     验证邮箱

对一些类似的注解进行辨析:code

  • 1.@NotNull:不能为null,但能够为empty对象

    (""," ","   ")
  • 2.@NotEmpty:不能为null,并且长度必须大于0ci

    (" ","  ")
  • 3.@NotBlank:只能做用在String上,不能为null,并且调用trim()后,长度必须大于0get

    ("test")    即:必须有实际字符

 @Length         支持类型: CharSequence

 @Size          支持类型:String, Collection, Map 和 arrays. Additionally supported by HV:

                      any sub-type of CharSequence.

相关文章
相关标签/搜索