實體 Validator 校驗
Validator主要是校驗使用者提交的資料的合理性的,比如是否為空了,密碼長度是否大於6位,是否是純數字的,等等。那麼在spring boot怎麼使用這麼強大的校驗框架呢。
在這裡我們主要是使用註解進行學習。我們先說說我們的需求:
我們有一個demo.html,在頁面上有兩個元素 姓名輸入框,密碼輸入庫,提交按鈕。
提交到後臺之後,使用Validator進行校驗,然後如果存在錯誤,轉發到demo.html,
我們先編寫一個實體類接收使用者的輸入,以及使用Validator註解校驗:
package com.kfit.demo;
import
import org.hibernate.validator.constraints.NotEmpty;
public class Demo {
private long id;
@NotEmpty(message="姓名不能為空")
private
@NotEmpty(message="密碼不能為空")
@Length(min=6,message="密碼長度不能小於6位")
private String password;
publiclong getId() {
return id;
}
publicvoid setId(longid) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Demo [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
這個實體類在屬性上加入了註解@NotEmpty,@Length,那麼常用的註解有:
約束註解名稱 約束註解說明
@null 驗證物件是否為空
@notnull 驗證物件是否為非空
@asserttrue 驗證 boolean 物件是否為 true
@assertfalse 驗證 boolean 物件是否為 false
@min 驗證 number 和 string 物件是否大等於指定的值
@max 驗證 number 和 string 物件是否小等於指定的值
@decimalmin 驗證 number 和 string 物件是否大等於指定的值,小數存在精度
@decimalmax 驗證 number 和 string 物件是否小等於指定的值,小數存在精度
@size 驗證物件(array,collection,map,string)長度是否在給定的範圍之內
@digits 驗證 number 和 string 的構成是否合法
@past 驗證 date 和 calendar 物件是否在當前時間之前
@future 驗證 date 和 calendar 物件是否在當前時間之後
@pattern 驗證 string 物件是否符合正則表示式的規則
@Email 驗證郵箱
實際例子:
@size (min=3, max=20, message="使用者名稱長度只能在3-20之間")
@size (min=6, max=20, message="密碼長度只能在6-20之間")
@pattern (regexp="[a-za-z0-9._%+-][email protected][a-za-z0-9.-]+\\.[a-za-z]{2,4}", message="郵件格式錯誤")
@Length(min = 5, max = 20, message = "使用者名稱長度必須位於5到20之間")
@Email(message = "比如輸入正確的郵箱")
@NotNull(message = "使用者名稱稱不能為空")
@Max(value = 100, message = "年齡不能大於100歲")
@Min(value= 18 ,message= "必須年滿18歲!" )
@AssertTrue(message = "bln4 must is true")
@AssertFalse(message = "blnf must is falase")
@DecimalMax(value="100",message="decim最大值是100")
DecimalMin(value="100",message="decim最小值是100")
@NotNull(message = "身份證不能為空")
@Pattern(regexp="^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message="身份證格式錯誤")