Swing通用数据验证模块

这段时间真是忙得要死,一方面要开发公司项目的系统框架,要将项目分成不同的子项目,编写核心 代码;另一方面要将极限编程(XP)引入团队开发,部署各类 XP需要的服务例如subversion啦,ant+ivy 啦,Hudson啦等等。顺便说句题外话,ubuntu还真是不是一般的好用,建议有能力的全部转到ubuntu上去 开发。

我目前开发的这个框架的客户端是具肥的客户端,也就是Swing客户端了。Swing应用相对于Web应用有 很多优势,因为它更肥。数据验证就是其中一个。当然现在的Web应用通过使用Ajax也要比以前强很多了 ,但是还是避免不了在验证数据时向服务段发出请求,至少你无法避免验证结果从Web服务器传输到用户 浏览器上这段过程。而Swing这类肥客户端可以实现完全在本地对数据进行验证,甚至可以断网继续工作 (这也是Web应用目前在研发的一个重要课题)。

前段时间开发出了一个可以应用于所有Swing应用的通用数据验证模块,发现它在项目中使用后,对于 普通的数据验证,程序员几乎不需要编码,效率提高了不少,就写了一篇博文拿出来和大家分享。原文是 用英文写的,在这里:http://polygoncell.blogspot.com/2008/07/validation-module-for-swing- application.html。英文好的朋友可以直接去那里看。

编写这个模块使用了很多不同的开源框架和类库,其中很重要的一个就是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. Hibernate Validator: http://www.hibernate.org/hib_docs/validator/reference/en/html_single/

2. Beansbinding: https://beansbinding.dev.java.net/

3. JXlayer: http://weblogs.java.net/blog/alexfromsun/

时间: 2024-11-03 08:19:32

Swing通用数据验证模块的相关文章

ASP项目中的通用条件查询模块

一.提出问题:    在大型的ASP项目中,都涉及到了条件查询这一功能.用户要求能够针对特定的字段进行查询.对于有些数据,是从多个表取出来的,因此也要能对多个表进行查询.    一般的话,大多数的做法就是每个程序都做一个查询功能,因为每个查询的表都不同,涉及的字段也不同.但是,如果在大型的ASP项目中这么做的话,不仅增加了工作量.影响开发进度,而且不能使系统模块化.代码复用,增加了系统维护难度.因此,我们有必要使条件查询模块化. 二.解决思路:    我们设计条件查询的功能为:    1.选择查

Winform开发框架之通用数据导入导出操作的事务性操作完善

1.通用数据导入导出操作模块回顾 在我的Winfrom开发框架里面,有一个通用的导入模块,它在默默处理这把规范的Excel数据导入到不 同的对象表里面,一直用它来快速完成数据导入的工作.很早在随笔<Winform开发框架之通用数据导入 导出操作>里面就很全面的介绍过它的相关功能了,在代码生成工具Database2Sharp里面,生成的 Winfrom界面代码也已经把它的调用代码放进去了,因此使用起来真是很好,很开心. 在不断的项目实践中,发现使用基于Sqlite的客户端作为单机版的操作也越来越

通用权限管理模块的设计与实现

一.简介 最近正在用VC做一个信息管理系统项目,由于涉及多个子系统,权限管理就成为一个共同需要解决的问题,于是做了一个通用权限管理模块,在各子系统中应用良好. (1)程序登陆框用户验证运行画面如下: (2)程序用户管理模块运行画面如下:

如何使用JavaScript和正则表达式进行数据验证_正则表达式

数据验证是网络应用软件从客户端接受数据的重要步骤,毕竟,您需要在使用客户数据前确保其符合预期的格式.在网络应用程序中,您可以选择使用特定平台的工具,比如ASP.NET.JSP等等,或者您可以利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作. 正则表达式 正则表达式是一种模式匹配的工具,它允许您以文字方式来表述模式,因而正则表达式成为了一个验证文本数据的强大工具.除了模式匹配之外,正则表达式还可以用于文字替换.从我在UNIX系统上使用Perl时第一次接

《HTML5实战》——第2章 创建表单:输入小部件、数据绑定以及数据验证

第2章 创建表单:输入小部件.数据绑定以及数据验证 本章主要内容 新的HTML5输入类型与属性 data-*属性,valueAsNumber元素以及output元素 约束验证API 绕过数据验证的方法 CSS3伪类 利用Modernizr进行HTML5特性侦测,利用polyfill进行回退兼容随着Web的日益成熟,用户开始需求更为丰富的表单字段类型及小部件,他们希望能有一种在各种Web应用中都通用的统一标准,特别是当涉及到数据验证时.HTML5充分迎合了这种需求,提供了13种新的表单输入类型,其

如何使用JavaScript和正则表达式进行数据验证

数据验证是网络应用软件从客户端接受数据的重要步骤,毕竟,您需要在使用客户数据前确保其符合预期的格式.在网络应用程序中,您可以选择使用特定平台的工具,比如ASP.NET.JSP等等,或者您可以利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作. 正则表达式 正则表达式是一种模式匹配的工具,它允许您以文字方式来表述模式,因而正则表达式成为了一个验证文本数据的强大工具.除了模式匹配之外,正则表达式还可以用于文字替换.从我在UNIX系统上使用Perl时第一次接

Winform开发框架之通用高级查询模块

最近一直忙于公司的事情,虽然一直在做一些相关的技术研究,但是很久没能静下心来好好写写博客文章了,想想也有半个月之多了,这半个月来,也一直致力于改善我的WInform开发框架,使得自己及客户使用起来更加方便,更加友好,更加高效.本篇文章就是介绍最近框架改善的其中一个闪光点"通用高级查询模块",高级查询模块,在很多程序模块中都很常见,也是给客户扩展查询的一个很好的补充,由于我一直希望我的Winform开发框架能够精益求精,所以做了这个模块,希望对今后我自己所有的项目以及框架本身,都能高效的

Winform开发框架之通用数据导入导出操作

做了很多Winform的项目,对于数据导入,一直也有自己的理解,由于一般的业务系统,经常性的数据导入时很正常的业务需求,因为毕竟使用Excel来操作数据也很方便,或者由于系统之间的数据交换需要,我们需要提供一个入口给客户导入所需要的数据.但是导入数据的时候,不同的业务数据对应不同的Excel文件,很难做到统一,但如果是每个业务模型,都创建一个不同的导入界面来操作Excel数据,又会觉得可能某种程度上重复劳动,增加开发及维护成本. 那么有无一种介于两者之间的方法,来实现效率的最优化,并且能够统一利

Winform开发框架之通用附件管理模块

在做Winform项目的时候,一直有一个梦想,就是希望把所有的组件模块组合即可组装成一个完整的项目系统(或者至少可以大部分完成).这即使是梦想,我也一直为之奋斗,每前进一步,我们离梦想就靠近一步.因此,本着这个梦想,我一路走来,开发整理了一系列的组件模块,包括底层的公用类库.Winform分页控件.通用的适应多数据库的查询组件,以及相对高层次一点的组件模块:通用权限管理系统.通用字典管理模块.通用程序自动更新模块.以及本篇随笔介绍的通用附件管理模块,当然还会有更多的组件模块会吸引我继续朝着梦想前