Struts 1.x 的Form 继承ValidatorForm

ValidatorFormvalidate方法

1validate()方法:使自己的ActionForm继承ValidatorForm类,在里面编写自己的方法:

public ActionErrors validate (ActionMapping mapping,HttpServletRequest request) {

ActionErrors errors = new ActionErrors();

......

if ( mytext.equals("aaa") ) {

errors.add("mytext",new ActionMessage("mytext.error"));

}

 

......

return errors;

}

此时,如果写了这个方法,就会屏蔽掉在Validation.xml中定义的验证部分,换句话说就是系统运行时,Validation.xml里对应此ActionForm的定义的错误验证部分不实行,如果不写这个方法的话,系统运行时会进行Validation.xml里对应此ActionForm的定义的错误验证部分的操作。此类方法是在服务器端进行验证,验证部分代码客户端不可见。

2、创建你的ActionForm并让它继承org.apache.struts.validator.ValidatorForm类。创建你的Action实现,并和上面定义的ActionForm关联。这里需要注意的是,在定义此Action时一定将validate属性设置为true,并且在你定义的ActionForm中不要实现它的validate方法――这就意味着你将使用ValidatorFormvalidate方法,这样才能保证你的错误验证正常进行。配置validation.xml文件。基本内容如下:

<form-validation>

    <formset>

              <form name="custGNewForm">需要验证页面上form的名字

                     <field property="certifiCode"需要校验的属性

                                   depends="required,maxlength">校验内容

                            <arg0 key="prompt.certifiCode"/>ApplicationResource文件中对应

                            <arg1 key="${var:maxlength}" name="maxlength" resouce="false"/>

                            <var>确定最长限制的长度

                                   <var-name>maxlength</var-name>

                                   <var-value>20</var-value>

                            </var>

                     </field>

注意:此处的arg0arg1就代表了ApplicationResources文件中使用“{}”括起来的参数。比如:

errors.range={0} is not in the range {1} through {2}.

定义了三个参数,所以你这里也要定义<arg0><arg1><arg2>三个参数才能完整的显示错误信息。

errors.maxlength={0} cannot be greater than {2} characters.

定义了02两个参数,所以你就需要定义<arg0><arg2>两个参数。

                     <field        property="userName"

                                   depends="required,maxlength">

                            <arg0 key="prompt.userName"/>

                            <arg2 key="${var:maxlength}" name="maxlength" resouce="false"/>

                            <var>

                                   <var-name>maxlength</var-name>

                                   <var-value>80</var-value>

                            </var>

                     </field>

                     <field property="email"

                    depends="email">

                <arg0 key="prompt.email"/>

            </field>

              </form>

              <form name="custGNewCheckForm">

                     <field       property="certifiCode"

                                   depends="required">

                            <arg0 key="prompt.certifiCode"/>

                     </field>

              </form>

    </formset>

</form-validation>

在校验页面的<body>前添加如下内容:<html:errors/>

posted @ 2012-11-23 09:29  寂静沙滩  阅读(693)  评论(0)    收藏  举报