在開發JAVA服務器端代碼時,我們會遇到對外部傳來的參數合法性的驗證,hibernate-validator提供了壹些常用的參數驗證註釋,我們可以使用。
將hibernate-validator對應的jar引入1 . maven;
& lt依賴性& gt
& ltgroupId & gtorg.hibernate & lt/groupId & gt;
& ltartifactId & gthibernate-validator & lt;/artifact id & gt;
& lt版本& gt4.3.1.最終& lt/version & gt;
& lt/dependency & gt;
2.定義模型中需要校驗的字段(即字段不能為空,最大長度為14):
導入javax . validation . constraints . size;
導入org . hibernate . validator . constraints . not empty;
公共類PayRequestDto {
/**
*付款完成時間
**/
@NotEmpty(message= "支付完成時間不能為空")
@Size(max=14,message= "支付完成時間不能超過{max}位數")
私有字符串payTime
公共字符串getPayTime() {
返回工資時間;
}
公共void setPayTime(字符串payTime) {
this.payTime = payTime
}
}
3.定義驗證工具類別:
導入Java . util . set;
導入javax . validation . constraint violation;
導入javax . validation . validation;
導入javax . validation . validator;
導入org . hibernate . validator . hibernate validator;
導入com . atai . framework . lang . app exception;
公共類驗證實用程序{
/**
*使用hibernate的註釋進行驗證。
*
*/
私有靜態驗證器validator =驗證
。by provider(hibernate validator . class)。配置()。failFast(真)。buildValidatorFactory()。get validator();
/**
*功能描述:
* <註釋驗證參數>
*
* @param obj
* @參見[相關類/方法](可選)
* @自[產品/模塊版本]起(可選)
*/
公共靜態& ltT & gt無效驗證(對象){
設置& ltconstraint違例& ltT & gt& gtconstraint violations = validator . validate(obj);
//引發測試異常
if(constraint violations . size()& gt;0) {
thrownnewappexception(" 0001 ",字符串。格式("參數驗證失敗:% s ",違反約束。叠代器()。下壹個()。getmessage())));
}
}
}
4.調用代碼中的工具類進行參數驗證:
validation utils . validate(requested to);
以下是hibernate-validator中壹些註釋的描述:
@AssertTrue用於布爾型字段,只能為True。
@AssertFalse該字段的值只能為False。
@CreditCardNumber對信用卡號進行粗略驗證。
@DecimalMax只能小於或等於該值。
@DecimalMin只能大於或等於該值。
@Digits(integer=,fraction=)檢查它是壹個數字的整數、分數還是小數。
@Email檢查是否是有效的電子郵件地址。
@Future檢查該字段中的日期是否屬於未來日期。
@Length(min=,max=)檢查其所屬字段的長度是否在min和max之間。它只能用於字符串。
@Max該字段的值只能小於或等於該值。
@Min該字段的值只能大於或等於該值。
@NotNull不能為空。
@NotBlank不能為空,檢查時將忽略空格。
@NotEmpty不能為空,其中Empty是指空字符串。
@Null請檢查該字段是否為空。
@ @Paste檢查該字段的日期是過去。
@Pattern(regex=,flag=)帶註釋的元素必須符合指定的正則表達式。
@Range(min=,max=,message=)批註的元素必須在適當的範圍內。
@Size(min=,max=)檢查該字段的大小是否在min和max之間,可以是字符串、數組、集合、映射等。
@URL(協議=,主機,端口)檢查是否是有效的URL。如果協議、主機等。則URL必須滿足所提供的條件。
@Valid這個註釋主要用在字段是包含其他對象的集合或者是壹個映射或者數組,或者字段是對另壹個對象的直接引用,這樣在檢查當前對象的時候就會檢查字段引用的對象。