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

Java EE 6數據驗證新框架:Bean驗證

原創
開發 后端
Java EE 6有三大新技術,分別是JAX-RS特性、上下文和依賴注入、以及Bean驗證。Bean驗證用于驗證數據,它提供了一個標準的驗證框架,在框架中相同的驗證集可以在應用程序的所有層之間共享。因此,Bean驗證減少了重復和錯誤,簡化了驗證。

【51CTO精選譯文】對于Sun最新發布的Java EE 6平臺,過去51CTO已經陸續介紹了平臺的主要目標,以及三大新技術中的JAX-RS以及上下文和依賴注入。本文介紹第三個技術:Bean驗證。

驗證數據是應用程序生命周期中一個常見的任務,例如,在應用程序的表示層,你可能想驗證用戶在文本框中輸入的字符數最多不超過20個,或者想驗證用戶在數字字段輸入的字符只能是數字。

開發人員在應用程序的各層中通常使用相同的驗證邏輯,或者將驗證邏輯放在數據模型中。

Bean驗證(JSR 303)使驗證變得更簡單了,減少了重復,錯誤和凌亂,Bean驗證提供了一個標準的驗證框架,在框架中相同的驗證集可以在應用程序的所有層之間共享。

Bean驗證提供了一個框架驗證遵循JavaBean規范編寫的Java類,你可以使用注解指定一個JavaBean上的約束,你可以注解一個JavaBean類、字段或屬性,你也可以通過XML描述符擴展或覆蓋這些約束,驗證類驗證每個約束時,你要指定那個驗證類用于給定的約束類型。

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

  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個字符)。

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

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

@NotNull 和@Size約束內置于Bean驗證框架中,因此你不需要為它們定義驗證類,但你可以在內置約束上添加自己的約束,那時就需要定義自己的驗證類了。例如,你可以定義如下的@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.  }  

然后你可以在類、字段或屬性上象其它約束定義那樣定義@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對象驗證后,addressline3的值傳遞給ZipcodeValidator類進行驗證,注意約束定義包括另一個約束:@Size(min=5, max=5),這意味著由@ZipCode注解注解的元素必須恰好是5個字符,除了執行ZipcodeValidator進行主要的約束檢查外,需要再次使用這個約束對元素進行驗證。Bean驗證允許你創建一個由其它約束組成的約束,還要注意約束定義了一個錯誤消息,如果驗證檢查約束失敗就返回這個錯誤消息,這里的錯誤消息是“Wrong zipcode”。

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

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

Order對象驗證后,Address對象和對象圖中關聯的對象也被驗證。

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

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

責任編輯:yangsai 來源: 51CTO.com
相關推薦

2010-03-22 09:33:18

Bean Valida

2011-04-02 14:33:51

Bean ValidaJava EE 6Java

2009-06-25 15:37:12

Struts2教程Validation框

2009-06-04 10:33:10

struts vali框架

2025-03-31 01:30:00

Gin框架模型

2014-06-09 09:19:10

2010-01-14 09:15:07

Java EE 6Servlet 3.0異步處理

2009-02-04 13:13:03

2022-02-17 13:04:57

網絡驗證運營商

2009-12-11 11:33:09

NetBeans 6.

2009-08-04 15:02:18

ASP.NET數據驗證

2009-07-10 11:25:48

Swing應用數據驗證

2009-07-23 09:42:44

EJB 3.1Java EE 6

2011-06-28 13:43:50

Java EE

2010-09-06 11:24:47

CHAP驗證PPP身份驗證

2015-03-17 09:28:04

2009-11-24 13:17:16

PHP安全驗證數據

2019-11-21 09:00:00

數據驗證EF Core

2009-06-05 09:58:20

struts2驗證用戶注冊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频在线播放 | 日韩高清中文字幕 | 色综合国产 | 国产原创在线观看 | 久久综合影院 | 337p日本欧洲亚洲大胆精蜜臀 | 中文字幕成人在线 | 国产一区久久 | 国产三级一区二区 | 国产激情一区二区三区 | 国产精品久久久久久久久久妞妞 | 精品在线99| 久久国产精品亚洲 | 91视在线国内在线播放酒店 | 免费在线毛片 | 亚洲一区不卡在线 | www.久 | 91亚洲精品在线观看 | 日本亚洲欧美 | 欧美极品视频 | 一级大片 | 玖玖视频国产 | 午夜影院操 | 欧美激情精品久久久久久变态 | 在线国产中文字幕 | 日韩和的一区二在线 | 一区二区三区在线 | 亚洲综合中文字幕在线观看 | 亚洲日韩中文字幕一区 | 欧美久久久 | 欧美日韩中文字幕在线 | 一本大道久久a久久精二百 国产成人免费在线 | 国产在线第一页 | 九九热免费观看 | 欧美日本高清 | 色狠狠一区 | 欧美一区二区三区四区在线 | 在线国产一区二区三区 | 九九久久国产精品 | 蜜臀久久99精品久久久久野外 | 亚洲精品一区中文字幕乱码 |