代码改变世界

Struts的数据校验

2012-04-15 10:54  myjava2  阅读(141)  评论(0编辑  收藏  举报

一、ActionForm的数据校验

         ActionForm的代码校验是最基本的校验方式,这种校验方式是重写ActionFormvalidate方法,在该方法内对所有的字段进行基本校验。如果出现不符合要求的输入则将出错提示封装在ActionError对象里,最后将多个ActionError组合成ActionErrors对象该对象里封装了全部的出错信息。    

         以上方法重写了validate方法,在validate中对每个需要校验的域完成校验,如果没有通过校验,则包装成ActionError。但是ActionErrorsActionError都是Struts不再推荐使用过的类。因此一般不用这种方法。

         注意:使用ActionForm的输入校验时,应为对应的action元素添加input元素,该属性指定当校验失败后返回的页面。

二、Action的代码校验

Action里通过代码完成输入校验,是最基本,也是最容易使用的方法,与最初的MVC相似,在调用该业务逻辑之前,先对数据进行基本校验,这是最原始的方法。

Action里完成校验,实际就是在execute方法的前面增加数据校验代码。

这种方法非常容易理解,所有代码都需要程序员自己控制,相当灵活,但是:

1.需要写大量代码,程序变得烦琐。2、数据校验应该在填充ActionForm里完成,最好能在客户端里校验,不应该推迟到Action里才完成校验。

三、Validator验证框架

         Strutsvalidator校验功能非常强大,几乎不需要写任何代码,不仅可以服务器完成校验,同时也可以完成客户端校验(javaScript提示)

优点:这种方式带来的好处,不用写相关的类以及代码,想改验证规则改改配置文件就行了以前验证的规则需要写到某个类中,这样验证规则和具体的逻辑分离了,
 缺点:配置文件写错了,很难发现,编译不了,在运行期才知道

         使用Strutsvalidator验证框架需要配置

1.     加入国际化资源文件并且把国际化配置放在struts-config.xml文件中。


2.     引入validator插件在struts-config.xml中,并且把validation.xmlvalidator_rules.xml文件配置好。经过validation.xml定义的规则,Struts就知道了每个表单域都应该满足那些规则,如果满足规则就不会提交给Action处理

3. 加载的校验规则文件有两个:validator-rules.xmlvalidation.xml

           Validation-rules.xml是由Struts提供,validation.xml文件是由程序员书写,定义了表单域必须满足的规则。

注意:如果不满足规则是,系统将返回到那个页面,可以通过struts-config.xml指定,配置action时,有个input属性,该属性就是不满足时跳到的页面,另外还得给action元素添加validate=true”属性。如下:

4.     继承ValidationForm的校验

5.     弹出客户端JavaScript提示,这种是客户端校验的规则,如果不用JavaScript提示就是服务器端的校验。

         需要弹出客户端JavaScript校验非常简单,无须修改其他配置文件,只需修改登录使用过的JSP页面的两个地方。

 (1).form元素增加onsubmit=”return validateXXXForm(this);”属性,其中XxxForm就是需要校验的form名,与struts-config.xml中配置form-bean的那么属性一致,也与validation.xml中校验的formname一致。

(2).增加<html:javascript formName=”xxxForm”>,xxxForm就是需要校验的form