2008年10月30日星期四

使用struts动态验证框架详细步骤分解(理论部分)


上次课讲解了struts的动态验证框架,并给同学们做了演示,今天正好有时间把它在这里再次讲解一遍,加深同学们的印象。对此还不太熟悉的同学们,可以按照以下的详细步骤分解彻底掌握。


要求基础:struts课程(2年)


准备工作:新建一个web工程,并且添加struts1.3支持。

为了添加struts的动态验证框架validator的支持,我们首先打开struts的配置文件struts-config.xml,添加一个插件。





是的,利用plug in 标签填加验证框架支持,我们按照图中所绘来配置struts-config文件,注意顺序,plug in标签一定放在最后的位置,否则出错。

在这里,向大家介绍一下配置的各项参数的意思,首先className属性是插件的实现类,主要是用来提供增加的插件功能的,我们也可以自己来编写struts的插件。pathnames是这个插件的配置属性,它的值就是动态验证框架需要的配置文件的位置。一共需要2个配置文件,一个是验证框架需要的验证规则文件,这个不需要你来编写,struts1.3为我们提供。另一个是我们针对ActionForm来编写的验证文件,主要是描述哪些属性需要验证,需要哪些验证等等。这个是需要我们来编写的,也就是说,按照上图的配置,你需要在你的WEB-INF下新建一个validation.xml文件。

我们暂时抛开新建的validation.xml不谈,先来新建一个ActionForm和配套的Action。要建立的ActionForm不要再继承org.apache.struts.action.ActionForm,而是继承org.apache.struts.validator.ValidatorForm或者org.apache.struts.validator.ValidatorActionForm.
如果你要使用动态ActionForm,那么就继承org.apache.struts.validator.DynaValidatorForm或者org.apache.struts.validator.DynaValidatorActionForm.最后建立一个Action,跟往常一样没任何变化.这里需要提示一点,ActionForm的validate方法依然可以重写,跟往常一样.

接下来,我们主要是围绕我们创建ActionForm时创建的表单jsp,我们刚才暂搁的validation.xml和资源文件来做工作.

我们首先打开我们加进来的struts-core-1.3.8.jar,看它的结构,找到如下画面,打开其中的validator-rules.xml,这是验证规则文件,我们需要拷贝一些默认的错误信息资源.



把文件内的错误消息拷贝到你的资源文件里:




我们可以看到里面有{0}这样的占位符,这个是我们可以添进去的补充消息.
好了,那么接下来我们要开始编写validation.xml文件了(这个可以拷贝我提供给你们的摸版,或者你们可以直接拷贝struts的空白工程里相应的文件),例子:




这里解释一下各参数的意思,form标签就是你的ActionForm的配置,由于你的工程很可能有多个ActionForm,那么在此验证文件里,你需要以form标签来分隔它们的配置.那么form标签里的name属性顾名思义就是你的form名称,这个和你在struts-config.xml里注册ActionForm的名字是一样的.field,就是你的ActionForm的属性,property是你的属性名字,depends是你要启用的验证规则,这个可以参考validator-rules.xml文件,当然,你也可以实现你自己的规则.在这里我启用的是required非空规则.最后的arg标签,这个是什么呢?我们可以看到刚才我们拷贝到资源文件里的错误消息有这么一条:



那么我们既然刚才启用了required非空验证,那么这里的arg标签实际上就是配置这个{0}占位符的内容. arg标签里面的key属性对应资源文件里的内容.可以看到例子里有个key为dyncForm.username的非空验证属性的配置.那么在我资源文件里一定有一个dyncForm.username=username 这样的key=value值对.如果出现错误,那么提示的错误消息就是username is required.

最后,我们来看一下我们创建的表单jsp,我们还需要在这里配置一些参数以使用动态验证框架提供的客户端验证生成的脚本.

具体配置看下面的例子:




这里解释一下这里的配置,由于我们要生成客户端验证脚本,所以要导入struts的html标签,因为我们要使用生成脚本.那么生成的脚本如何使用呢?这里要配置,这里要注意return函数的名字,validate是固定的,后面是你的ActionForm的名字,注意,第一个字母要大写.


那么一切工作就绪,我们来测试一下,如果什么都不填,那么点提交的时候,会弹出对话框,并且提交失败:



好了,以上是我们了解如何使用struts的动态验证框架的全部内容,那么下次呢,我会针对各种不同的验证规则,提供validation.xml的配置举例,另外还会提供其他的配置参数详解.针对这次的课程,如果有同学有不理解的地方,可以找我.希望看过这篇文章的同学回家做相关的练习,你们练习的结果发我邮箱,问题也可以发我邮箱,再次提醒我邮箱的地址yangaccp@gmail.com,邮件的主题按照我们之前定义的规则施行.



没有评论:

发表评论