表单验证,就是对用户的输入数据进行有效性检查,那么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