成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java EE 6核心特征:Bean Validation解析

開發 后端
Bean Validation——Java EE 6的一個核心特性,它為實體驗證定義了一個元數據模型和API。其默認的元數據源是注解,但開發者可以通過XML描述符對其進行擴展。

Bean Validation是Java EE 6數據驗證新框架,Validation API并不依賴特定的應用層或是編程模型,這樣同一套驗證可由應用的所有層共享。它還提供了通過擴展Validation API來增加客戶化驗證約束的機制以及查詢約束元數據倉庫的手段。

在Java EE 6的Bean Validation出現之前,開發者不得不在表示層框架、業務層以及持久層中編寫驗證規則以保證這些規則的同步性,但這么做非常浪費時間而且極易出錯。Bean Validation是通過約束實現的,這些約束以注解的形式出現,注解可以放在JavaBean(如backing bean)的屬性、方法或是類上面。約束既可以是內建的注解(位于javax.validation.constraints包下面),也可以由用戶定義。一些常用的內建注解列舉如下:

◆Min:被@Min所注解的元素必須是個數字,其值要大于或等于給定的最小值。

◆Max:被@Max所注解的元素必須是個數字,其值要小于或等于給定的最大值。

◆Size:@Size表示被注解的元素必須位于給定的最小值和最大值之間。支持Size驗證的數據類型有String、Collection(計算集合的大?。ap以及數組。

◆NotNull:@NotNull確保被注解的元素不能為null。

◆Null:@Null確保被注解的元素一定為null。

◆Pattern:@Pattern確保被注解的元素(String)一定會匹配給定的Java正則表達式。

代碼中通過Bean Validation注解聲明了一些約束:

  1. public class Address {  
  2.        @NotNull @Size(max=30)  
  3.        private String addressline1;  
  4.  
  5.        @Size(max=30)  
  6.        private String addressline2;  
  7.  
  8.        public String getAddressline1() {  
  9.           return addressline1;  
  10.        }  
  11.  
  12.        public void setAddressline1(String addressline1) {  
  13.           this.addressline1 = addressline1;  
  14.        }  
  15.    } 

@NotNull指定被注解的元素addressline1不能為null;@Size指定被注解的元素addressline1和addressline2不能超過給定的最大值,即30個字符。

在驗證Address對象時,addressline1的值被傳遞到針對@NotNull約束的驗證類以及針對@Size約束的驗證類中,而addressline2的值被傳遞到針對@Size約束的驗證類中,由相關的驗證類進行驗證。如下代碼自定義了一個名為ZipCode的約束:

  1. @Size(min=5max=5)  
  2.    @ConstraintValidator(ZipcodeValidator.class)  
  3.    @Documented  
  4.    @Target({ANNOTATION_TYPE, METHOD, FIELD})  
  5.    @Retention(RUNTIME)  
  6.    public @interface ZipCode {  
  7.        String message() default "Wrong zipcode";  
  8.        String[] groups() default {};  
  9.    } 

 可以將@ZipCode用在類、屬性或是方法上,就像其他約束一樣。

  1. public class Address {  
  2.        @ZipCode  
  3.        private String zipCode;  
  4.  
  5.        public String getZipCode() {  
  6.           return zipCode;  
  7.        }  
  8.  
  9.        public void setZipCode(String zipCode) {  
  10.           this.zipCode = zipCode;  
  11.        }  
  12.    } 

Validation API

開發者可以借助于Validation API以編程的方式驗證JavaBean。Bean Validation API的默認包是javax.validation。下面對該包中的一些類進行說明:

ConstraintValidator:這是一個接口,具體的約束驗證類需要實現該接口。該接口定義了相關的邏輯以驗證給定對象類型中的約束。

Validator:Validahttp://java.sun.com/javaee/6/docs/api/index.html?javax/validation/Validator.htmltor接口持有對象驗證圖的契約。該接口的實現必須是線程安全的。

ConstraintViolation:ConstraintViolation接口表示給定bean上的約束驗證失敗,它公開了約束違背上下文以及描述該違背情況的信息。

ValidationException:如果在驗證過程中出現了某些不可恢復的錯誤就會拋出ValidationException異常。某些情況下可以指定該異常,如不合法的分組(group)定義、不合法的約束定義以及不合法的約束聲明等等。

約束元數據請求API

Bean Validation規范提供了查詢約束倉庫的手段。該API主要用于工具支持和與其他框架、庫以及JSR的集成。Bean Validation規范旨在為對象約束提供一個驗證引擎和元數據倉庫。需要進行約束定義、驗證和元數據的框架(Java EE或Java SE)可以利用Bean Validation規范完成這些功能,從應用或是基礎設施的角度來看,這么做可以避免不必要的重復工作。

Bean Validation已經集成到了JSF 2.0和JPA 2.0中。在JSF中可以將表單輸入域與域對象的屬性綁定起來。JSF 2和Bean Validation可以判斷出綁定的是哪個屬性并執行與之相關的驗證,還會將約束違背的信息顯示給用戶。Hibernate Validator 4是Bean Validation規范的參考實現框架,其最新版增加了不少新特性,如分組驗證、與JPA 2和JSF 2的自然集成以及擴展的注解集等等。

【編輯推薦】

  1. Java EE 6簡化開發總結:注解支持與Profile
  2. Java EE 6引入的JPA 2.0四大新特性詳解
  3. Java EE 6新特性之Servlet 3.0的異步處理
  4. Java EE 6數據驗證新框架:Bean驗證
  5. 九大因素讓Java EE 6成為你的省錢法寶
責任編輯:王曉東 來源: infoq
相關推薦

2011-04-02 14:33:51

Bean ValidaJava EE 6Java

2010-01-05 09:15:45

Java EE 6Bean驗證

2013-07-11 09:29:24

J2EE7

2023-10-18 18:38:44

數據校驗業務

2009-12-08 09:09:58

Java EE 6

2011-08-12 08:40:39

PaaSOpenShiftJava EE 6

2012-02-20 10:28:03

JBossJava

2021-10-08 06:50:32

版本歷史代碼

2009-10-26 10:05:51

NetBeans 6.

2009-12-15 09:13:07

Java EE 6

2010-07-01 15:31:08

Java EE 6EJBWebService

2009-06-10 13:19:21

J2EE核心APIJ2EE核心組件

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2010-01-14 09:15:07

Java EE 6Servlet 3.0異步處理

2009-06-22 17:05:41

Java EEJava企業應用

2010-01-26 09:10:38

Java EE 6注解Profile

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2009-12-03 08:55:12

Java EE 6

2009-12-11 11:33:09

NetBeans 6.

2010-05-27 15:20:29

移動IPv6技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品91久久久久久再现 | av天天干 | 凹凸日日摸日日碰夜夜 | 国产精品久久久久久久久免费软件 | 亚洲综合免费 | 天堂在线中文 | 天天av综合 | 毛片免费看 | 国产精品视频一二三区 | 91精品国产综合久久久动漫日韩 | 中文字幕乱码视频32 | 久久这里有精品 | 亚洲精品在线视频 | 黄色网址免费在线观看 | 国产精品亚洲成在人线 | 欧美日韩一区精品 | 成人在线播放 | 嫩草国产 | 免费在线观看一区二区三区 | 免费久久99精品国产婷婷六月 | 色伊人网 | 91文字幕巨乱亚洲香蕉 | 国产一区二区三区 | 午夜爽爽爽男女免费观看影院 | 国产精品久久久 | 欧美黑人巨大videos精品 | 夜夜av | 在线成人免费观看 | 在线观看成人 | 久久久精品综合 | 国产女人与拘做受免费视频 | av中文天堂 | www.日日干 | 日日夜夜精品免费视频 | 欧美日韩在线精品 | xnxx 日本免费 | 久久久久欧美 | 国产大毛片 | 中国一级特黄真人毛片 | 91精品国产综合久久久动漫日韩 | 一区二区伦理电影 |