Swing应用的数据验证

开发 后端
本文介绍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.

【编辑推荐】

  1. SwingWorker的实例化
  2. Swing控件可以提供听觉反馈
  3. Java swing组件的串行化方法
  4. Swing组件的新元素Spinner Model
  5. SwingWorker单线程规则
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-10 14:41:57

Swing技术

2009-07-17 16:09:29

Swing桌面应用程序

2009-07-14 18:10:38

Swing应用程序框架

2009-07-16 17:09:02

Swing应用程序

2009-07-17 10:42:06

Swing应用程序处理函数

2009-07-10 17:24:07

Swing应用程序

2011-04-15 17:33:39

SWINGAWT

2009-07-15 15:35:59

Swing程序Swing性能

2009-07-14 11:08:42

WebRendererSwing应用程序

2009-11-26 10:48:59

PHP验证码

2009-07-17 15:34:37

Java Swing连接数据库

2009-08-04 15:02:18

ASP.NET数据验证

2022-02-17 13:04:57

网络验证运营商

2023-12-01 08:01:33

GoValidator

2009-07-14 17:21:42

Swing组件

2009-07-14 15:01:02

AWT和Swing

2009-07-15 11:02:32

Swing组件

2009-07-16 08:53:03

Swing任务Swing线程

2009-08-05 13:09:17

ASP.NET应用执行

2009-07-17 11:30:44

Swing Image
点赞
收藏

51CTO技术栈公众号