J2EE 7中的Bean Validation 1.1正式发布以来已经有数周了。与此同时,Jave EE 7平台的最终标准也一定制定了。现在,是时候去了解下我们能从这次BeanValidation的版本更新中得到什么新的特性以及了解其参考实现Hibernate Validator 5的新功能。在本文中,将简要向开发者介绍J2EE7中Bean Validation 1.1新特性――表达式语言。首先要了解下Bean Validation标准。所谓的Bean Validation,就是JavaEE 提出的使用注解的方式对Java Bean 进行约束验证的规范。目前最新的BeanValidation 1.1标准请参考(http://beanvalidation.org/1.1/)。在最新的1.1规范中,引入了类似JSP中的表达式语言(EL,标准请参考http://jcp.org/en/jsr/detail?id=341)。要知道,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: ${validatedValue.getName()}" )
- public class Customer {
- //...
- public String getName() {
- return name;
- }
- }
在这个例子中,当这个bean违反了@ValidCustomer这个约束后,则会显示出:“Not a valid customer: Bob”这样的提示信息。也就是说,通过使用注解${validatedValue.getName(),获得了违反规定的输入的值Bob,这里是通过反射机制通过getName()方法获得的。新的格式化功能 最后,在Bean validation 1.1中,在格式化显示字符串方面提供了工具助手类formatter,其使用格式为:format(String format, Object... args),这个跟Java语言中的java.util.Formatter.format(String format, Object...args)其实是差不多的。如果用在格式化数字的时候是相当方便的,如下例子所示:
- public class Order {
- @DecimalMin(value="20.00", message="Order value too low: € ${formatter.format('%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等构建工具,则可以使用org.hibernate.hibernate-validator.5.0.1.Final的坐标进行查找。如果你是编成爱好者,甚至可以下载WildFly的代码进行构建,它使用了最新的Hibernate validator 5。最新的参考手册有详细的信息可供开发者参考,也可以在相关的论坛中进行发问。
原文链接:http://in.relation.to/Bloggers/BeanValidation11FeatureSpotlightExpressionLanguage
分享文章:J2EE7中BeanValidation1.1新特性介绍---表达式语言
文章地址:http://www.shufengxianlan.com/qtweb/news25/7425.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联