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的坐标进行查找。
-
2017计算机应用基础题库附带答案
NIT合格证书由教育部考试中心签发,是证书持有人计算机应用能力的证明。本站小编收集了一些关于计算机应用基础题库附带答案,希望大家认真阅读!【1】计算机应用基础题库附带答案1、[单选题]在计算机中,一条指令代码由操作码和__C_____两部分组成。(A)、指令码(B)...
-
计算机二级office高级应用试题及答案
一、单项选择题1.将程序像数据一样存放在计算机内存中运行,是1946年由提出的。A)图灵B)布尔C)冯·诺依曼D)爱因斯坦2.世界上生产微处理(CPU)芯片的厂家很多,就是其中之一。A)IBM公司B)微软公司C)Intel公司D)联想公司3.计算机能按人们的意图自动地进行操作...
-
厦门大学2017年3月计算机等级考试报名通知
厦门大学2017年3月计算机等级考试报名统一实行网上报名,不接纳现场报名。2017年考试继续使用2013版考试体系,同时对部分级别和科目进行调整,二级Access数据库程序设计(科目代码29)将使用新版考试大纲(2016年版),详细如下:一、关键时间:1、网上报名时间厦门大学思明...
-
2017年计算机二级mos office考试试题及答案「精选」
计算机应用是计算机学科与其他学科相结合的边缘学科,是计算机学科的组成部分。下面是小编整理的关于计算机二级mosoffice考试试题及答案,希望大家认真阅读!1[单选题]下列叙述中正确的是().A.结点中具有两个指针域的链表一定是二叉链表B.结点中具有两个指针域的链...