给WebWork2.2增加JavaScript客户端校验(一)

在WebWork2.2中(beta-2) 我们发现它使用DWRValidator来做客户端校验,而我们熟悉的JavaScript客户端校验已经没有了.

DWRValidator的工作方式是利用input的onBlur事件来引发校验动作,每次都连接到服务器端去进行一次校验

我认为DWRValidator主要存在如下几个问题:

  • 性能问题,每个input的一次onblur都会引发一个校验
  • 校验是异步的
  • 如果用户不填写数据,直接点击提交,目前是不会引发校验的(以后可能会修正,不过因为异步机制,不是很好处理)

当然DWRValidator也有很多好处

  • 用户无需关心客户端校验的处理
  • 不用写JavaScript了
  • 客户端校验和服务器端校验保持一致

 

无论如何,我们应该给用户更多选择,于是,我经过几天的研究,给WebWork2.2加上了在2.1.6版本中存在的JavaScript客户端校验.

具体步骤如下:

  • 在webwork.properties里面增加一个配置,来配置校验
  • 从WebWork2.1.6中复制 ScriptValidationAware, JavaScriptVisitorFieldValidator,JavaScriptRequiredFieldValidator
  • 从WebWork2.2中复制Form.java, UIBean.java,进行相应修改
  • 创建一个新的模板template,例如叫jsxhtml,从xhtml模板目录复制 form.ftl,form_close.ftl,theme.proerties 等并进行修改
  • 从webwork-2.2-beta-2.jar 以及 src.jar里面删除Form,UIBean2个类

是的,你看到了一些bad smell,我们对webwork本身进行了修改,这是一种非常不好的办法.

不过目前为止我还没有找到更简单的办法. (如果你有任何想法,可以告诉我 :) )  ,只好采取这种办法.

当然如果Webwork本身提供这种支持,那肯定就是更好地了. :)  如果你觉得这样不错,可以去WebWork的论坛发表你的意见,否则开发人员肯定是不会采取的.

 注意事项!!!

webwork还在不断的修改中,还没有发布2.2的最后版本,所以下文提到的修改都是会随时变化的,所以只有到了最后发布的时候,才能确定修改的内容,请不要盲目修改.

 

修改配置文件,增加自定义设置

在自己项目里的webwork.properties文件里面增加

jsvalidator=true

true表示使用JavaScript校验,否则即使你使用了对应的模板也不会进行设置.

为了使用对应的模板,你可以在tag中指定使用的theme,也可以在webwork.properties里面指定默认的theme:

webwork.ui.theme=jsxhtml

当然如果你不需要使用javaScript校验,请保持原来的设置

 


 


 
创造共用协议:署名,非商业,保持一致   除经特别注明外,本文章版权归JScud Develop团队或其作者所有.
署名,非商业用途,保持一致.   scud(飞云小侠)   JScud Develop

posted on 2005-10-03 14:32 Scud(飞云小侠) 阅读(1237) 评论(1)  编辑  收藏 所属分类: WEB

评论

# re: 给WebWork2.2增加JavaScript客户端校验(一) 2006-04-03 14:57 宪哥

hack jar还蛮郁闷的。不过还是谢谢scud做出的贡献!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2005年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

公告

文章发布许可
创造共用协议:署名,非商业,保持一致

我的邮件
cnscud # gmail


常用链接

留言簿(15)

随笔分类(113)

随笔档案(103)

相册

友情链接

技术网站

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜