日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaEE6數(shù)據(jù)驗(yàn)證新框架:Bean驗(yàn)證

【精選譯文】對于Sun最新發(fā)布的Java EE 6平臺,過去已經(jīng)陸續(xù)介紹了平臺的主要目標(biāo),以及三大新技術(shù)中的JAX-RS以及上下文和依賴注入。本文介紹第三個(gè)技術(shù):Bean驗(yàn)證。

驗(yàn)證數(shù)據(jù)是應(yīng)用程序生命周期中一個(gè)常見的任務(wù),例如,在應(yīng)用程序的表示層,你可能想驗(yàn)證用戶在文本框中輸入的字符數(shù)最多不超過20個(gè),或者想驗(yàn)證用戶在數(shù)字字段輸入的字符只能是數(shù)字。

開發(fā)人員在應(yīng)用程序的各層中通常使用相同的驗(yàn)證邏輯,或者將驗(yàn)證邏輯放在數(shù)據(jù)模型中。

Bean驗(yàn)證(JSR 303)使驗(yàn)證變得更簡單了,減少了重復(fù),錯(cuò)誤和凌亂,Bean驗(yàn)證提供了一個(gè)標(biāo)準(zhǔn)的驗(yàn)證框架,在框架中相同的驗(yàn)證集可以在應(yīng)用程序的所有層之間共享。

Bean驗(yàn)證提供了一個(gè)框架驗(yàn)證遵循JavaBean規(guī)范編寫的Java類,你可以使用注解指定一個(gè)JavaBean上的約束,你可以注解一個(gè)JavaBean類、字段或?qū)傩?,你也可以通過XML描述符擴(kuò)展或覆蓋這些約束,驗(yàn)證類驗(yàn)證每個(gè)約束時(shí),你要指定那個(gè)驗(yàn)證類用于給定的約束類型。

例如,下面是通過Bean驗(yàn)證注解聲明一些約束的類的一部分代碼:

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

@NotNull注解指定了注解元素addressline1絕不能為空,@Size注解指定注解元素addressline1和addressline2決不能大于指定的長度(30個(gè)字符)。

驗(yàn)證Address對象時(shí),addressline1的值傳遞給為@NotNull約束定義的驗(yàn)證類,同時(shí)還要傳遞給為@Size約束定義的驗(yàn)證類,addressline2的值也要傳遞給為@Size約束定義的驗(yàn)證類。

編輯推薦:Java EE 6平臺指南

@NotNull 和@Size約束內(nèi)置于Bean驗(yàn)證框架中,因此你不需要為它們定義驗(yàn)證類,但你可以在內(nèi)置約束上添加自己的約束,那時(shí)就需要定義自己的驗(yàn)證類了。例如,你可以定義如下的@ZipCode約束:

 
 
 
  1. @Size(min=5, max=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.  }  

然后你可以在類、字段或?qū)傩陨舷笃渌s束定義那樣定義@ZipCode約束,如:

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

#t#Address對象驗(yàn)證后,addressline3的值傳遞給ZipcodeValidator類進(jìn)行驗(yàn)證,注意約束定義包括另一個(gè)約束:@Size(min=5, max=5),這意味著由@ZipCode注解注解的元素必須恰好是5個(gè)字符,除了執(zhí)行ZipcodeValidator進(jìn)行主要的約束檢查外,需要再次使用這個(gè)約束對元素進(jìn)行驗(yàn)證。Bean驗(yàn)證允許你創(chuàng)建一個(gè)由其它約束組成的約束,還要注意約束定義了一個(gè)錯(cuò)誤消息,如果驗(yàn)證檢查約束失敗就返回這個(gè)錯(cuò)誤消息,這里的錯(cuò)誤消息是“Wrong zipcode”。

你也可以使用Bean驗(yàn)證驗(yàn)證一個(gè)完整的對象圖(object graph),一個(gè)對象圖是由其它對象組成的一個(gè)對象,如果你在對象圖的根對象上指定@Valid注解,它會指引相關(guān)的驗(yàn)證器遞歸驗(yàn)證對象圖中的關(guān)聯(lián)對象,如:

 
 
 
  1. public class Order {  
  2.        @OrderNumber private String orderNumber;  
  3.        @Valid @NotNull private Address delivery;  
  4.    }  
  5.  

Order對象驗(yàn)證后,Address對象和對象圖中關(guān)聯(lián)的對象也被驗(yàn)證。

為了滿足在應(yīng)用程序各層之間共享相同的驗(yàn)證集,Java EE 6平臺整合了Bean驗(yàn)證。例如,表示層技術(shù),如JSF,以及企業(yè)級技術(shù),如JPA,都可以通過Bean驗(yàn)證框架訪問約束定義和驗(yàn)證器,你不再需要在多個(gè)地方指定約束。

原文:Introducing the Java EE 6 Platform 作者:Ed Ort


文章題目:JavaEE6數(shù)據(jù)驗(yàn)證新框架:Bean驗(yàn)證
路徑分享:http://www.5511xx.com/article/coieohg.html