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

给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

你可能感兴趣的:(给WebWork2.2增加JavaScript客户端校验(一))