J2EE 7中Bean Validation1.1的新特性
J2EE 7中的Bean Validation 1.1正式發佈很久了了。與此同時,Jave EE 7平台的最終標準也一定製定了。下面小編為大家整理了關於J2EE 7中Bean Validation1.1的新特性,希望能為你提供幫助:
現在,是時候去了解下我們能從這次BeanValidation的版本更新中得到什麼新的特性以及瞭解其參考實現Hibernate Validator 5的新功能。在本文中,將簡要向開發者介紹J2EE7中Bean Validation 1.1新特性――表達式語言。首先要了解下Bean Validation標準。所謂的Bean Validation,就是JavaEE 提出的使用註解的方式對Java Bean 進行約束驗證的規範。目前最新的BeanValidation 1.1標準請參考()。在最新的1.1規範中,引入了類似JSP中的表達式語言(EL,標準請參考)。要知道,EL其實的應用場合是很廣的,特別是一些很好的用法如Lambda表達式等都有很大用處,而且能用在J2SE或J2EE中。在Bean Validation 1.1中,開發者可以充分利用EL表達式中的強大的功能去做一些條件的判斷以及實現一些自定義輸出。
使用EL表達式限制值作為例子,首先來看下其內置的@DecimalMax約束。在BeanValidation 1.1中,該約束增加了一個新的標誌位名為inclusiv,它表示約束中是否包含或不包含給定的最大值。根據該標誌位,約束限制的信息或者是小於給定的值{value}或者是等於給定的值{value}。這樣的用法BeanValidation 1.0中是比較難實現的,但在1.1中缺很容易實現,下面是一個典型的例子:
must be less than ${inclusive == true ? 'or equal to '> : ''}{value}"
這裏,假設 value賦值為50的話,則假如@DecimalMax 中設置了inclusive屬性為true,則輸出:
must be less than or equal to 50;如果設置為false,則輸出must be less than 50。
validatedValue特性
在Bean validation 1.1中,還可以在bean的約束屬性中,設計當某個bean違反了某個約束規則後,顯示所違反規則的真實的值,如下面的例子:
@ValidCustomer( message = "Not a valid customer: ${ame()}" ) public class Customer { //... public String getName() { return name; } }
在這個例子中,當這個bean違反了@ValidCustomer這個約束後,則會顯示出:“Not a valid customer: Bob”這樣的提示信息。也就是説,通過使用註解${ame(),獲得了違反規定的輸入的值Bob,這裏是通過反射機制通過getName()方法獲得的。新的格式化功能 最後,在Bean validation 1.1中,在格式化顯示字符串方面提供了工具助手類formatter,其使用格式為:format(String format, Object... args),這個跟Java語言中的at(String format, )其實是差不多的。如果用在格式化數字的時候是相當方便的,如下例子所示:
public class Order { @DecimalMin(value="20.00", message="Order value too low: € ${at('%08.2f', validatedValue )}") private final BigDecimal value; //... }
如果輸入的數字小於20,則會輸出:Order value too low: € 00017.89,這裏是取了兩位小數。
EL和Classpath
為了充分利用EL表達式,必須在classpath中放置EL的實現jar包。當在如WildFly等JavaEE容器中運行的`時候通常會遇到點問題,開發者也需要在普通的JavaSE環境中增加EL的實現jar包。兩種目前能和HibernateValidator工作良好的實現是EL的參考實現和JUEL。而對於使用Tomcat的用户,HiberateValidator至少需要的是EL 2.2標準,這個在Tomcat7中已經實現了。而Tomcat 6則只能和EL2.1的實現搭配使用。這個是否意味着Tomcat 6就不能享用EL的新功能?幸運的是,只需要額外的一些準備工作,可以通過查看HibernateValidator FAQ去學習如何更新Tomcat的EL類庫。親自動手如果要體驗最新的Bean validation 1.1的特性,可以從這裏鏈接獲得最新的Hibernate Validator。如果使用的是Maven,Gradle等構建工具,則可以使用l的座標進行查找。
-
J2EE發展趨勢
在舊金山舉行的2011年JavaOne大會上,甲骨文公司展示了其推動Java平台企業版(JavaEE)發展的最新成果。JavaEE繼續大受歡迎,並有越來越多的開發人員採用,包括OracleGlassFishServer在內的JavaEE組件獲得了4000萬次下載。自2009年12月推出以來,6個主要IT廠商已經推出...
-
J2EE系統優化:對象與循環
優化一般意義上説是提高已有系統的性能,減少如內存、數據庫、網絡帶寬等資源的佔用,是在系統開發告一段落的前提下進行。一般是通過壓力測試或具體使用發現性能方面的問題,然後尋找性能瓶頸,並結合項目進度、人員安排、技術儲備等因素,提出相應的優化策略。下面結合...
-
J2EE的13種核心技術
J2EE(Java2Platform,EnterpriseEdition)是一個為大企業主機級的計算類型而設計的Java平台。Sun微系統(與其工業夥伴一起,例如IBM)設計了J2EE,以此來簡化在瘦客户級環境下的應用開發。下面是小編整理的關於J2EE的13種核心技術,歡迎大家參考!一、宏觀印象:分佈式結...
-
2016最新J2EE測試題題庫
一、JAVA語言1、面向對象的三個基本特徵2、方法重載和方法重寫的概念和區別3、接口和內部類、抽象類的特徵4、文件讀寫的基本類5、串行化的注意事項以及如何實現串行化6、線程的基本概念、線程的本狀態以及狀態之間的關係STOP(),SUSPENG()STOP的本意是中止一個...
相關文章
- 八年級英語下冊Unit 6 An old man tried to move a Mountain period one説課稿
- win7系統重裝win10提示not a valid image file
- 關於Unit 1 The Dragon Boat Festival教學案
- 最新《Fate/Stay Night Unlimited Blade Works》經典名句
- 英語閲讀:African Union Leaders Talk Mali, Chinese Investmen
- A Lifeguard at Johns Beach Saved a Drowning Child,A Lifeguar英語作文
- 《Unit 2 Does Daming like bananas?》説課稿
- Diaspora Finance Powers Global Development美文欣賞
- Food and place of interest in Beijing國中英語作文
- 英語作文International Day of Peace Vigil