快捷搜索:

Swing通用数据验证模块

这段光阴真是忙得要逝世,一方面要开拓公司项目的系统框架,要将项目分成不合的子项目,编写核心代码;另一方面要将极限编程(XP)引入团队开拓,支配种种 XP必要的办事例如subversion啦,ant+ivy啦,Hudson啦等等。顺便说句题外话,ubuntu还真是不是一样平常的好用,建议有能力的整个转到ubuntu上去开拓。

我今朝开拓的这个框架的客户端是具肥的客户端,也便是Swing客户端了。Swing利用相对付Web利用有很多上风,由于它更肥。数据验证便是此中一个。当然现在的Web利用经由过程应用Ajax也要比曩昔强很多了,然则照样避免不了在验证数据时向办事段发出哀求,至少你无法避免验证结果从Web办事器传输到用户浏览器上这段历程。而Swing这类肥客户端可以实现完全在本地对数据进行验证,以致可以断网继承事情(这也是Web利用今朝在研发的一个紧张课题)。

前段光阴开拓出了一个可以利用于所有Swing利用的通用数据验证模块,发明它在项目中应用后,对付通俗的数据验证,法度榜样员险些不必要编码,效率前进了不少,就写了一篇博文拿出来和大年夜家分享。原文是用英文写的。

编写这个模块应用了很多不合的开源框架和类库,此中很紧张的一个便是JXLayer.文章写完后,我就跑去约请JXLayer的作者Alexp来辅导一下,然后就在我的文章后面开始了一段评论争论,挺故意思的,他不愧为是Swing team里面的牛人啊!厉害啊!呵呵。

ok,回到本日这篇文章的正题。本日的主要目的是将我的英文博文翻译成中文(自己的文章,我就不逐字逐句翻译了,意思到了就行了,可能还会随兴展开一番评论争论)在这里展示给大年夜家,与大年夜家分享开拓履历,盼望大年夜家能够从中获益,也盼望能够以文会友,广交同伙。废话少说,切入正题。

数据验证(Validation)不停是软件开拓中异常紧张的一环,有了它,你的系统会让客户认为加倍友善,同时你的系统也获得了必然程度的保护。一样平常来说,数据验证既可以在客户端也可以在办事端。默认的JSF数据验证便是在办事端,数据只能在被提交今后才能够被验证,然后把差错信息通报回用户的浏览器。后来大年夜规模应用Ajax后,基础可以实现对改动的数据“即时”验证,留意这里是个打了引号的即时,数据事实上照样要在浏览器和办事端之间进行通报的,只不过Ajax将这种通报改为隐式了而已,理论上并没有真正实现(断网)即时验证。而在Swing利用上就能够杀青这种希望。

事实上,开拓Swing利用时,数据验证不停对照棘手,必要手工编码的地方太多,效率不高。后来出了JGoodies Validation 结合JGoodies binding后,好了一些。这个JGoodies Validation既可以实现model层面的验证,也可以实现Bean层面的验证,然则多年应用下来,发明着实它对照适用于中小项目,而且要编写的代码着实一点不比本武艺动编写的少。

JGoodies盛行了一段光阴后,sun开始推出自己的bean绑定规划:beansbinding(JSR 295),我小我感到要比JGoodies binding好用(JGoodies的作者Karsten也在专家组里,这小我我曩昔和他一路共事过,我的msn space里面还有跟他的合影,绝对是Swing界的牛人)。这个beansbinding也供给数据验证,然则它的这个数据验证只是在target被篡改后,数据被同步回source之前才会起感化,应用起来局限性对照大年夜,而且编码量也不小。

因为今朝绝大年夜部分项目是基于POJO的,Hibernate validator已经供给了一个很好的数据验证框架,我们完全没需要再重复发现轮子,我们应该努力站在巨人的肩膀上,这样我们才能站得更高,看得更远。于是我斟酌结合beansbinding和Hibernate Validator开拓数据验证。还有一个紧张的问题,那便是数据差错的时刻,必要在用户界面上展示响应的信息,例如Error icon和差错提示,这部分我斟酌应用JXLayer.

您可能还会对下面的文章感兴趣: