Springboot--表单验证@Valid
一、简介
springboot给我们提供了强大的表单验证功能,为我们省去了写验证的麻烦。
以下使用一个简单的注册页面来进行演示;
二、实例
1、注册页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/Regist"> 用户名:<input name="username" type="text"/><br> 密码:<input name="password" type="password"/><br> 年龄:<input name="age" type="text"/> <button type="submit">注册</button> </form> </body> </html>
2、新建一个model类,用于验证用户填写的注册信息;
public class ReegistModel { @Size(min=5,message = "用户名长度不能小于5") @NotNull(message = "不能为空") private String username; @Size(min=5,max=16,message = "密码长度在5-16之间") @NotNull(message = "不能为空") private String password; @Min(value=13,message = "年龄最小为13") @Max(value=80,message = "年龄最大为80") @NotNull(message = "不能为空") private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
3、新建一个controller类,接收用户注册参数前加上@Valid注解
@RequestMapping("Regist")
public String regist(@Valid ReegistModel regist, BindingResult bindingResult){
if(bindingResult.hasErrors()){
return bindingResult.getFieldError().getDefaultMessage();
}
return "注册成功";
}
4、演示结果
(1)、用户名不符合要求
(2)、密码不符合要求
(3)、年龄不符合要求
三、注解清单
限制 | 说明 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
PS:因作者能力有限,如有误还请谅解;