ValidatorActionForm,ValidatorForm和ActionForm

本文详细介绍了Struts1中的验证机制,包括ActionForm、ValidatorForm及ValidatorActionForm的作用及区别,并探讨了如何通过Struts Validator框架进行客户端和服务端验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ValidatorActionform

是验证框架针对action的

ValidatorForm 是验证表单的

如果ActionForm 继承了ValidatorForm

那么以后的操作中就不用写验证了.

ActionForm 是struts 1版中的

ActionForm是窗体的对象化表示,它本身其实是个JavaBean,除了标准的getter与setter等方法之外,还提供有reset()、validate()等方法供Struts组件呼叫。

当透过发送请求来到ActionServlet后,ActionServlet会从ActionMapping对象中得知所使用的ActionForm对象,这是在struts-config.xml中设定的,如果所需的ActionForm还不存在就生成一个,之后一直使用它,ActionMapping与ActionForm对象会被当作参数传递给Action对象。

在Struts 1.1中,ActionForm生成之后,会执行RequestProcessor的processPopulate()方法,首先它会呼叫 ActionForm的reset()方法,您可以在当中作一些重清ActionForm属性的动作,然而窗体的参数值会与ActionForm的 setter进行比对,如果有名称符合的就将窗体的参数值设定给对应的属性。

validator框架 validate方法 ActionForm/ValidatorForm/ValidatorActionForm

truts 1.3为例

validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm

不同点:

(1).继承自ActionForm的FormBean,必须覆基类ActionForm的validate()方法,仅能做服务器端检验。需要在struts config.xml中配置中,Action一定要将validate属性设置为validate="true“. 不是Struts Validator框架,也不需要配置文件信息。

(2).继承自ValidatorForm 或 ValidatorActionForm 的FormBean,是Struts Validator框架。可以做服务器端检验,也可以通过生成JavaScript的方式实现客户端检验。

(3).作为Struts Validator框架, 必须不能覆盖基类的validate()方法。即必须使用基类的validate()方法,才能保证错误验证正常进行。否则就会屏蔽掉在Validation.xml中定义的验证部分,在系统运行时,validation.xml里对应此FormBean定义的错误验证部分不执行。

(4).作为Struts Validator框架,需要validator.xml 和 validator-rules.xml 配置文件,无论是服务器还是客户端验证。服务器端验证:validate="true“。客户端验证:validate="false“

(5).ValidatorForm 和 ValidatorActionForm 的区别。

一、在对应的Form Beans中重载validate方法

在struts-config.xml文件中,action节点下有“validate”这样一个属性。在struts框架中,默认属性是validate=”true”。所以如果想通过Form Baens的重载validate方法来验证数据的话,可以不用理会这一点。题外话:如果你在struts-config.xml文件中,设置validate="false"的话,validate方法将不起作用。这一点同样对Validate框架来验证数据起作用。

二、通过Validator框架来验证数据

1、配置struts-config.xml文件,增加:

2、配置validation.xml文件

----这里的userForm是Form Beans的名字

   ……

以上是通过validatorForm- or DynaValidatorForm来实现Validate验证的

现在有这样一个问题,Form Beans可以被多个Action应用,而每个Action可能需要的验证字段都不一样。而在validation.xml中配置的验证方式(如

)是对这个Form Beans进行的。于是,Form Beans可以继承ValidatorActionForm(当然可以直接配置DynaValidatorActionForm)。如下所示:

validation.xml文件配置如下:

----这里的采用的是action的path路径

    ……

三、结合上面的两种验证

如果即在Form Beans中重载了validate方法,又启用了Validate框架,那会是什么效果呢?

由于要启用Validate框架,FormBeans需要继承ValidatorForm,查看ValidatorForm的源代码,发现validate方法已经作了处理(真是为Validate框架所服务的)。

那么在Form Beans中重载了validate方法的话,就会覆盖原有ValidatorForm中对应的功能,所以如果想一起用的话,需要在Form Beans的validate方法中调用errors = super.validate(mapping, request);这句代码是启用Validate框架所要做的工作,然后可以判断errors再作下一步的处理。

当然也可以先做Form Beans中的validate方法,然后启用Validate框架,要看具体情况而定。

四、启用客户端验证

也是结合validation.xml来验证的

①在需要客户端验证的jsp中加上这么一句

其中formName就是validation.xml中

所对应的内容

②在

它的语法为:return validate + struts-config.xml中定义的form-bean名称 + (this);

比如:追加onsubmit="return validateUserForm(this);"

formset 可以含有language, country 等属性对应java.util.Locale class

formset 配置:

   form name:对应的表单name,必须与 中formName属性以及struts-config中ActionForm名称相同。

depends="required, minlength,maxlength,idcard">   //depends是validator-rules.xml中的规则名称name

                //错误信息参数,错误信息文件由message-resources标签指示。参数最多4个

                //resource=false说明直接以key的值作为值,而不到message-resources文件中查找对应值

                 //var为下面定义的变量

               

               

               

                    maxlength //变量名

                    16//变量值

               

               

                  minlength

                    3

               

               

                    idcardlength

                    15

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值