2016-5-17 java驗證框架 Validator的使用
在寫實際專案中,對於入參總是需要進行大量的if判斷去驗證資料的合法性,雖然這是必要的,但是難免對於程式碼的層次結構和美觀程度有著一定的影響。於是,在不堪一個controller中(或者其他類)if大量的判斷條件,嘗試使用了validator驗證框架進行資料的基礎驗證。
1:配置 在pom中加入依賴
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr303</artifactId>
<version>0.5</version>
</dependency>
其中缺少第二個jsr303的依賴不會在編寫程式碼時出現錯誤,但是會在獲得Validator時報以下錯誤:
javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found
因為JSR 303 – Bean Validation 是一個數據驗證的規範,2009 年 11 月確定最終方案。 所以需要加入這個規範才能正常的使用這個框架。
2:使用步驟
2.1 給具體的欄位加上註解
public class Brand {
@NotNull(message = "不能為空")
private Long brandId;
@Max(value = 1000)
private Long parentId;
private String name;
}
在需要被驗證的類中的具體欄位上加上具體的註解以及註解的值,其中註解的種類和使用方法參考這篇文章
Bean Validation 中的 constraint
表 1. Bean Validation 中內建的 constraint
Constraint | 詳細資訊 |
---|---|
@Null |
被註釋的元素必須為 null |
@NotNull |
被註釋的元素必須不為 null |
@AssertTrue |
被註釋的元素必須為 true |
@AssertFalse |
被註釋的元素必須為 false |
@Min(value) |
被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 |
@Max(value) |
被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
@DecimalMin(value) |
被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 |
@DecimalMax(value) |
被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
@Size(max, min) |
被註釋的元素的大小必須在指定的範圍內 |
@Digits (integer, fraction) |
被註釋的元素必須是一個數字,其值必須在可接受的範圍內 |
@Past |
被註釋的元素必須是一個過去的日期 |
@Future |
被註釋的元素必須是一個將來的日期 |
@Pattern(value) |
被註釋的元素必須符合指定的正則表示式 |
表 2. Hibernate Validator 附加的 constraint
Constraint | 詳細資訊 |
---|---|
@Email |
被註釋的元素必須是電子郵箱地址 |
@Length |
被註釋的字串的大小必須在指定的範圍內 |
@NotEmpty |
被註釋的字串的必須非空 |
@Range |
被註釋的元素必須在合適的範圍內 |
http://www.ibm.com/developerworks/cn/java/j-lo-jsr303/
2.2 在具體方法中校驗註解規範的欄位是否符合
public static void main(String[] args) {
Brand brand = new Brand();
brand.setName("123");
brand.setBrandId(1l);
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Brand>> validations = validator.validate(brand);
if (validations.isEmpty()) {
System.out.println("true");
}
}
此時系統列印 true
當將brand.setBrandId(1l); 註釋之後 單步除錯可以看到validations 為具體的驗證失敗的欄位值以及當時填寫的message內容 如
[ConstraintViolationImpl{[email protected], propertyPath='brandId', message='不能為空', [email protected], value=null}]
由此可以減少大量的if判斷
(完)
相關推薦
2016-5-17 java驗證框架 Validator的使用
在寫實際專案中,對於入參總是需要進行大量的if判斷去驗證資料的合法性,雖然這是必要的,但是難免對於程式碼的層次結構和美觀程度有著一定的影響。於是,在不堪一個controller中(或者其他類)if大量的判斷條件,嘗試使用了validator驗證框架進行資料的基礎驗證。 1
Struts的輸入驗證框架Validator使用
gist gin pos success src content 類型 names action 1、首先保證要做輸入驗證的Action實現了validateable接口(如果Action已經繼承了actionSupport則不用) 2、有兩種方法使用Validator框
Java的業務邏輯驗證框架fluent-validator
1 背景在網際網路行業中,基於Java開發的業務類系統,不管是服務端還是客戶端,業務邏輯程式碼的更新往往是非常頻繁的,這源於功能的快速迭代特性。在一般公司內部,特別是使用Java web技術構建的平臺中,不管是基於模組化還是服務化的,業務邏輯都會相對複雜。這些系統之間、系統內
laravel框架 5.4 關於驗證和添加存在的bug
laravel框架 5.4 關於驗證和添加存在的bug今天本地測試添加用戶沒有問題。提交到服務器就報錯 sql語句找不到User.user_name字段;後來請教了一位大神,他告訴我 首先匹配服務器環境最好一至,我再執行驗證的時候有一個有個查詢的過程也就是驗證用戶唯一性的unique方法,這個方法是有參數的!
201671010116. 2016-2017-5《Java程序設計》認識繼承
表示 自學 繼承 相關 equal 父類 概念 多個 相等 本周在老師的講解下我可以找到自己之前自學遺漏的細節以及易混淆的概念,自學後再經老師講解,很多問題就迎刃而解了。比如在老師講解後我對繼承又有了更多認識: 1.父類: 1)Java中一個類可以有多個子類,但一個類只
201671010145 2016-2017《Java程序設計》JAVA圖形程序設計基本框架
window 窗口 found 完全 str kit 圖形 awt abstract 在Java 1.0 剛剛出現的時候,包含了一個用於基本GUI程序設計的類庫,Sun將它稱為抽象窗口工具箱(Abstract Window Toolkit, AWT)。 1996年,Nets
spring MVC 使用 hibernate validator驗證框架,國際化配置
dex erp fault reg path api turn regex oca spring mvc使用hibernate validator框架可以實現的功能: 1. 註解java bean聲明校驗規則。 2. 添加message錯誤信息源實現國際化配置。 3.
Hibernate Validator驗證框架中@NotEmpty、@NotBlank、@NotNull 的區別
區別 valid ID hibernate 框架 In str temp nat Hibernate Validator驗證框架中@NotEmpty、@NotBlank、@NotNull的主要使用情況 @NotEmpty 用在集合類上面 @NotBlank 用在Str
3到5年工作經驗是如何回答面試中被問到的Java集合框架問題
可能很多人會問Java集合真的那麼重要嗎,就像為什麼現在很多企業都喜歡先問演算法一樣,目的就是考察你對Java基礎掌握的程度如何。下面我將列出了一些關於Java集合的重要問題,讓我們一起看看3到5年的Java開發工程師是如何回答這些問題的。 Java集合中 List、Set、M
5.Java集合框架剖析 之 Hashset和LinkedHashSet原始碼剖析
1 package java.util; 2 3 import java.io.InvalidObjectException; 4 import sun.misc.SharedSecrets; 5 6 public class HashSet<E> extends
Java集合框架17:鍵盤錄入學生資訊按照總分排序後輸出到控制檯
案例演示 package grade; importjava.util.Comparator; import java.util.Scanner; import java.util.TreeSet; public class Test7 { /**
spring boot 使用 hibernate validator驗證框架
之前寫小專案時,遇到前後端互動資料,每次都要對每個欄位進行格式驗證,而且驗證的步驟和程式碼大都是千篇一律。今天接觸到了hibernate validator驗證框架,今後就能擺脫這種煩人的情況了。 hibernate validator的依賴在spring-boot-starter-we
struts2 validator 驗證框架遇到的問題
我在使用 ValidationInterceptor 驗證框架驗證使用者名稱是否為空時,出現下面的錯誤 Struts Problem Report Struts has detected an unhandled exception: Messages:
筆記—初次使用Struts2.5.17框架
這個版本是目前(2018)最新版,先到官網 點選Full Distribution下載,然後解壓到自己想要的一個目錄下,:接著可以下載一個min版本(截圖第三個)的,這個裡面有我們需要的的基本包。 第一步:建立一個WEB動態工程。 第二步:導包,把剛剛下載的基本包
Struts2之Validator驗證框架的詳細介紹
Struts2中提供了資料校驗驗證資料例如驗證郵件、數字等。驗證方式有3種: 一是通過validate()方法, 二是通過Xml, 三是使用註解方式。 一、初始化 首先定義一個User類 1 2 3 4 5 6
SOFARPC 5.5.0 釋出,螞蟻金服高效能 Java RPC 框架
SOFARPC 5.5.0 釋出了,SOFARPC 是一個高可擴充套件性、高效能、生產級的 Java RPC 框架。SOFARPC 致力於簡化應用之間的 RPC 呼叫,為應用提供方便透明、穩定高效的點對點遠端服務呼叫方案。為了使用者和開發者方便的進行功能擴充套件,SOFA
java api 驗證框架設計 基於jfinal 設計api閘道器
1、api閘道器主要工作: 統一解析引數 、檢驗資料、 2、通過繼承AbstractsApi 自動實現攔截、進行解析,檢驗。 3、整個框架設計圖 介面例項: /** * 內容介面 * * @author OF * @date 2017年12月14日
Java新手專案之第一個專案(一)2016.5.16-5.22
Java學生選課教務系統 作為學習Java的新手,之前學過點Java的基礎,後來又看了看網易雲課堂的java,總共差不多兩個月的時間吧,陸陸續續跟著書和視訊編了一些程式。馬上也要畢業,現在開始,希望能夠寫一些新手,進階,高階專案經歷。一方面,是對自己實踐的一個
Java+Selenium3框架設計篇5-如何實現郵件傳送測試報告
本篇繼續回答網友的問題,這個主題是如何通過郵件傳送測試報告。通過郵件傳送測試報告,這個很重要,也很有必要。不管你使用什麼自動化測試框架,都建議添加發送測試報告的功能。先來設計我們的傳送郵件的場景:假如我們測試報告是固定的名稱,放在固定的路徑下。 1.下載jav
java的不同驗證器 validator
JSR-303是一個介面標準,它並不是Spring Framework 的一部分。 Hibernate Validator是JSR-303的一個實現。在FormBean裡新增Hibernate Validator的註解,與定義一個校驗類的做法相比。註解更加簡潔、靈活。 註