SpringBoot 表单验证
表单验证,就是对用户的输入数据进行有效性检查,那么SpringBoot是如何来做的呢?
还是以添加学生为例来进行说明,其中,Student实体类的代码如下:
@Entity
public class Student {
@Id
@GeneratedValue
private Integer id;
private String name;
private Integer age;
public Student() {
}
//getter、setter方法
}
在前面博文SpringBoot 相关的数据库操作中,我们知道,如果不进行验证,则存储一个学生信息到数据库中的代码如下:
/**
* 添加一个学生的信息到数据库中
* */
@PostMapping(value="/add")
public Student studentAdd(Student student){
return studentRepository.save(student);
}
这样就会导致age如果为负数也可以添加到数据库中,因此,确实需要进行验证。
作为例子,现在需要做这样一件事:即只有年满18岁的学生才能被添加进来。其他关于Student类的name属性是否为空以及长度呀等等验证方法类似。
具体验证步骤如下
1、在Student类中使用注解@Min对该类的相应属性age上进行限制。
@Min(value = 18,message = "未满18岁")
private Integer age;
2、使用@Valid注解验证数据,并且使用BindingResult获取结果。具体修改StudentController中相应方法studentAdd中的代码如下:
/**
* 添加一个学生的信息到数据库中,在添加之前进行验证是否符合要求
* */
@PostMapping(value="/add")
public Student studentAdd(@Valid Student student, BindingResult bindingResult){
if (bindingResult.hasErrors()){
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
}
return studentRepository.save(student);
}
以上就完成了对学生信息的验证,避免出现其他情况。
除了@Min注解之外,还有很多注解用于对属性做相应的限制以配合验证。
例如:
@Null 验证对象是否为空
@NotNull 验证对象是否为非空
@AssertTrue 验证 boolean 对象是否为 true
@AssertFalse 验证 boolean 对象是否为 false