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的座標進行查找。
相關文章
-
Food and place of interest in Beijing國中英語作文
Hello,welcome to Beijing a chinese ,I am gald to tell you something about Beijing. Now, please quite and listen me Do you know Beijing Roast Duck is so delicious that people all over the world like -
英語作文International Day of Peace Vigil
The goal of the Inteational Day of Peace Vigil is: "To encourage the observation of a worldwide, grassroots 24-hour vigil for peace and nonviolence on the Inteational Day of Peace, Sunday, 21 Septembe -
英語閲讀:African Union Leaders Talk Mali, Chinese Investmen
African leaders met in Ethiopia during the weekend to celebrate the 50th anniversary of their continental alliance and discuss issues such as Chinese investment on the continent as well as the fight a -
win7系統重裝win10提示not a valid image file
時間過得真快,一段時間的工作已經告一段落了,前方等待着我們的是新工作目標和挑戰,想必現在的你有必要寫一寫策劃書了。你知道寫策劃書需要注意哪些問題嗎?以下是小編精心整理的大學演講比賽策劃書,歡迎閲讀與收藏。大學演 -
八年級英語下冊Unit 6 An old man tried to move a Mountain period one説課稿
尊敬各位老師,各位同學,大家好。今天我説課的內容是人教版新目標八年級英語下冊Unit 6 An old man tried to move a Mountain period one,我的説課包括:一、 説教材(一)教材的地位的作用本單元討論的主題是“傳説和故事”,其 -
關於Unit 1 The Dragon Boat Festival教學案
一、選擇並抄寫單詞1. We have Dragon Boat _____ (competition, races) on the 5t h day of the 5th lunar month.2. Kitty likes sweet dumplings, but she ______ (hates, hate) salty ones.3. Chinese people ___ -
Diaspora Finance Powers Global Development美文欣賞
Diaspora Finance Powers Global DevelopmentLuis Lopez-Ramirez, a 30-year old Honduran immigrant, makes pizza.He has worked two jobs over 16 hours each day.He carefully saves his money and rents a small -
A Lifeguard at Johns Beach Saved a Drowning Child,A Lifeguar英語作文
在生活、工作和學習中,大家一定都接觸過作文吧,作文是人們把記憶中所存儲的有關知識、經驗和思想用書面形式表達出來的記敍方式。為了讓您在寫作文時更加簡單方便,下面是小編收集整理的'A Lifeguard at Johns Beach Sav -
《Unit 2 Does Daming like bananas?》説課稿
一、説教材本單元主要是一般疑問句的第三人稱單數的問法,所學習的單詞也是圍繞此展開的。所以如何掌握句型是本課的重點和難點,但字母的書寫也是本課需要掌握的。我想利用上節課學的句子與本課的句型進行對比來突破 -
最新《Fate/Stay Night Unlimited Blade Works》經典名句
1、他人比自己更重要的這種想法,想讓所有人都幸福的願望,只不過空想中的童話罷了。如果你必須抱着這種東西才能活下去的話,就抱着它溺死吧 ----Archer2、名為幸福的位置是有限的,必須要把那些得不到幸福的人及時抹除,這就