SpringMVC: @Valid 表单验证

冷不防 2021-10-01 12:14 414阅读 0赞

使用例子

  • Spring Boot 提供了强大的表单验证功能实现

假设我们有一个 Student 实体类

  1. @Entity
  2. @Table(name = "Student")
  3. @Data
  4. public class Student {
  5. @Id
  6. @GeneratedValue
  7. private Integer id;
  8. @NotEmpty(message = "姓名不能为空!")
  9. @Column(length = 50)
  10. private String name;
  11. @NotNull(message = "年龄不能为空!")
  12. @Min(value = 18, message = "年龄必须大于18岁!")
  13. @Column(length = 50)
  14. private Integer age;
  15. }

Dao 接口

  1. public interface StudentRepository extends JpaRepository<Student,Integer> {}
  2. Service 接口:
  3. public interface StudentService {
  4. void add(Student student);
  5. }

Service 接口实现类

  1. @Service
  2. public class StudentServiceImpl implements StudentService {
  3. @Autowired
  4. private StudentRepository studentRepository;
  5. @Override
  6. public void add(Student student) {
  7. studentRepository.save(student);
  8. }
  9. }

Controller

  1. @RestController
  2. @RequestMapping("/student")
  3. public class StudentController {
  4. @Autowired
  5. private StudentService studentService;
  6. @PostMapping(value="/add")
  7. public String add(@Valid Student student, BindingResult bindingResult){
  8. if(bindingResult.hasErrors()){
  9. return bindingResult.getFieldError().getDefaultMessage();
  10. }else{
  11. studentService.add(student);
  12. return "添加成功!";
  13. }
  14. }
  15. }
  • @ValidBindingResult

    • @Valid 注解在参数上,表示让 Spring 验证该参数的属性
    • @Valid 参数后紧跟着一个 BindingResult 参数,用于获取校验结果,否则 Spring 会在校验不通过时抛出异常

校验注解

空检查

  • @Null:限制只能为 null
  • @NotNull:限制不能为 null
  • @NotEmpty:不为 null 且不为空(字符串长度不为0、集合大小不为0)
  • @NotBlank:不为空(不为 null、去除首位空格后的长度为0,与@NotEmpty不同的是字符串比较时会去除字符串的空格)

Boolean检查

  • @AssertFalse:限制必须为false
  • @AssertTrue:限制必须为true

长度检查

  • @Size(max,min):限制长度必须在 min 到 max 之间
  • @Length(min=,max=):长度在 min 到 max 之间

日期检查

  • @Past:验证注解的元素值(日期类型)比当前时间早
  • @Future:限制必须为一个将来的日期
  • @Pattern(value):限制必须符合制定的正则表达式

数值检查

  • @Max(value):限制必须为一个大于指定值的数字
  • @Min(value):限制必须为一个小于指定值的数字
  • @DecimalMax(value):限制必须为一个大于指定值的数字
  • @DecimalMin(value):限制必须为一个小于指定值的数字
  • @Range(min=, max=) :数值在 min 到 max 之间
  • @Digits(integer,fraction):限制必须为一个小数,整数部分位数不能超过integer,小数部分不能超过 fraction

其它检查

  • @Email:验证元素的值时Email
  • @URL(protocol=,host=, port=,regexp=, flags=):请求地址、端口、主机检查

发表评论

表情:
评论列表 (有 0 条评论,414人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot 验证@Valid

           最近在做项目的时候,需要对调用方传递过来的JSON格式数据项做验证,用来防范小白搞乱网站和一些低级的黑客技术。SpringBoot提供了强大的表单验证功能实现。即

    相关 SpringBoot之验证@Valid

    SpringBoot提供了强大的表单验证功能实现,给我们省去了写验证的麻烦; 这里我们给下实例,提交一个有姓名和年龄的表单添加功能, 要求姓名不能为空,年龄必须是不小于18