天天看點

SpringMVC 使用JSR-303進行校驗 @Valid

使用注解

一、準備校驗時使用的jar

validation-api-1.0.0.ga.jar:jdk的接口;

hibernate-validator-4.2.0.final.jar是對上述接口的實作;

log4j、slf4j、slf4j-log4j

二、編寫需要校驗的bean

三、校驗方法

SpringMVC 使用JSR-303進行校驗 @Valid
SpringMVC 使用JSR-303進行校驗 @Valid

備注:這裡一個@valid的參數後必須緊挨着一個bindingresult 參數,否則spring會在校驗不通過時直接抛出異常

前台可以使用spring的标簽庫也可以自己自定義處理

spring标簽庫的用法:

SpringMVC 使用JSR-303進行校驗 @Valid
SpringMVC 使用JSR-303進行校驗 @Valid

四、開啟spring的valid功能

五、jsr303定義的校驗類型

SpringMVC 使用JSR-303進行校驗 @Valid

空檢查

@null       驗證對象是否為null

@notnull    驗證對象是否不為null, 無法查檢長度為0的字元串

@notblank 檢查限制字元串是不是null還有被trim的長度是否大于0,隻對字元串,且會去掉前後空格.

@notempty 檢查限制元素是否為null或者是empty.

booelan檢查

@asserttrue     驗證 boolean 對象是否為 true  

@assertfalse    驗證 boolean 對象是否為 false  

長度檢查

@size(min=, max=) 驗證對象(array,collection,map,string)長度是否在給定的範圍之内  

@length(min=, max=) validates that the annotated string is between min and max included.

日期檢查

@past           驗證 date 和 calendar 對象是否在目前時間之前  

@future     驗證 date 和 calendar 對象是否在目前時間之後  

@pattern    驗證 string 對象是否符合正規表達式的規則

數值檢查,建議使用在stirng,integer類型,不建議使用在int類型上,因為表單值為“”時無法轉換為int,但可以轉換為stirng為"",integer為null

@min            驗證 number 和 string 對象是否大等于指定的值  

@max            驗證 number 和 string 對象是否小等于指定的值  

@decimalmax 被标注的值必須不大于限制中指定的最大值. 這個限制的參數是一個通過bigdecimal定義的最大值的字元串表示.小數存在精度

@decimalmin 被标注的值必須不小于限制中指定的最小值. 這個限制的參數是一個通過bigdecimal定義的最小值的字元串表示.小數存在精度

@digits     驗證 number 和 string 的構成是否合法  

@digits(integer=,fraction=) 驗證字元串是否是符合指定格式的數字,interger指定整數精度,fraction指定小數精度。

@range(min=, max=) checks whether the annotated value lies between (inclusive) the specified minimum and maximum.

@range(min=10000,max=50000,message="range.bean.wage")

private bigdecimal wage;

@valid 遞歸的對關聯對象進行校驗, 如果關聯對象是個集合或者數組,那麼對其中的元素進行遞歸校驗,如果是一個map,則對其中的值部分進行校驗.(是否進行遞歸驗證)

@creditcardnumber信用卡驗證

@email  驗證是否是郵件位址,如果為null,不進行驗證,算通過驗證。

@scriptassert(lang= ,script=, alias=)

@url(protocol=,host=, port=,regexp=, flags=)

SpringMVC 使用JSR-303進行校驗 @Valid

六、自定義校驗類型

使用接口