一、簡介
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:因作者能力有限,如有誤還請諒解;