struts验证控件 步骤,及详细节点属性说明

1.主要内容
   1.validator验证框架步骤
   2.validation.xml文件的设置

validator内主要代码

      1.form里:name对应struts-config.xml中一个具体action里的attribute
      2.field里:property是ActionForm里的属性名,实际上对应于页面中的文本框,即:要对哪个文本框进行验证
                depends表示依赖于哪些验证规则
      3.arg里:resource属性,若为true,key的值从属性文件中读出,若为false,则为key 等号后的值
              name验证规则的名称,如果arg0没有name属性,key值 对应所有属性文件中的{0}
                                 如果有name属性,key值只 对应此规则的属性文件中的{0}
            比如:在validation.xml里同时设置2个arg0
                <arg0 key="name" resource="false"/>
                <arg0 key="name11" name="required" resource="false"/>
              效果:属性文件中所有{0},会赋值为name,而errors.required对应的是name11
                   比如:  
                   errors.required={0} is required {1}                        //{0}是name11
                   errors.minlength={0}'minlength must be greater than {1}    //{0}是name
                   errors.maxlength={0}'maxlength must be less than {2}       //{0}是name
       4.var参数设置         

2.validator验证框架步骤
  1.将form.LoginForm继承的类ActionForm改为ValidatorForm,导包 并注释此类中的validate和reset方法
  2.创建validation.xml文件(重点,具体参看例子设置)
  3.struts-config.xml中添加plug-in节点(直接从WEB-INF下validator-rules.xml中拷贝)
   <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
   </plug-in>
  4.在ApplicationResources.properties 中添加提示的信息(参看例子设置)
  5.在页面上添加<html:errors property="username"/>


3.例子(需要变动的主要是第2步和第4步,即:validation.xml和ApplicationResources.properties)
   此例依次验证了用户名: 不为空,最小长度6位,必须是字母,最大长度10,并解释了各个属性的功能

ApplicationResources.properties中的内容
  errors.required={0} is required {1}
  errors.minlength={0}'minlength must be greater than {1}
  errors.maxlength={0}'maxlength must be less than {2}
  errors.invalid= {0} {3}
  name=username
  char=must be a-z or A-Z

validation.xml中的内容
   //下面的头 直接从WEB-INF下validator-rules.xml中拷贝
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
   //自己写的代码
<form-validation>
<formset>
<form name="loginForm">
      <field property="username" depends="required,minlength,mask,maxlength"> 
             <arg0 key="name"/>
             <arg0 key="name11" name="required" resource="false"/>
             <arg1 key="${var:minlength}" name="minlength" resource="false"/>
      <arg2 key="${var:maxlength}" name="maxlength" resource="false"/>
      <arg3 key="char"/>
      <var>
            <var-name>minlength</var-name>
           <var-value>6</var-value>
      </var>
      <var>
          <var-name>maxlength</var-name>
          <var-value>10</var-value>
      </var>
            <var><var-name>mask</var-name>
           <var-value>^[a-zA-Z]+$</var-value>
      </var>  
</field>
</form>
</formset>
</form-validation>

4.解释:
<form-validation>总框架,
<formset>对Form里的数据进行配置
<form name="loginForm">loginForm对应于struts-config.xml中一个具体action里的attribute
<field property="username" depends="required,minlength,mask,maxlength"> 
field:配置一个属性的验证内容
property是ActionForm里的属性名,实际上对应于页面中的文本框,即:要对哪个文本框进行验证
depends  依赖于哪些验证规则,可以是validator-rules.xml里的也可以自定义
<arg0 key="name" name="required" resource="false"/>
   1.resource属性,如果为true,key的值从属性文件中读出,若为false,则为key 等号后的值
        1.如果resource为true,则会从ApplicationResources.properties中找到name=username
             把username 赋给errors.required={0} is required里的"{0}"  username is required
        2.如果resource=false,则直接把name赋给"{0}"    name is required
   2. name验证规则的名称,如果arg0没有name属性,key值 对应所有属性文件中的{0}
                         如果有name属性,key值只 对应此规则的属性文件中的{0}
        比如:在validation.xml里同时设置下面2个arg0
             <arg0 key="name" resource="false"/>
             <arg0 key="name11" name="required" resource="false"/>
        效果:属性文件中所有{0},会赋值为name,而errors.required对应的是name11 
              errors.required={0} is required                            //{0}是name11
              errors.minlength={0}'minlength must be greater than {1}    //{0}是name
              errors.maxlength={0}'maxlength must be less than {2}       //{0}是name
              errors.invalid= {0} {3}                                    //{0}是name
<var>
    <var-name>minlength</var-name>
    <var-value>6</var-value>
</var>
var参数,为validator-rules.xml里的对应规则配置的(由程序员设置的)
   1.并不是所有的都需要参数,
     比如:非空验证,不需要程序员指定什么
          而用户名最小长度,必须有程序指定
   2.需要指定参数的有
        minlength maxlength mask(正则表达式)...
   3.参数的使用
       minlength:用户名最小为3,则可以如下设置
             1.真正验证时参数: <var><var-name>minlength</var-name><var-value>3</var-value></var>
             2.提示信息时参数:<arg1 key="3" name="minlength" resource="false"/>
        mask参数:正则表达式挺方便的
           1.真正验证时参数:
                   <var><var-name>mask</var-name><var-value>^[a-zA-Z]+$</var-value></var>
           2.提示信息时参数:<arg1 key="must be a-z or A-Z" name="minlength" resource="false"/>

5.代码   代码下载
   项目测试:1.运行代码,点提交
            2.输入小于6的字母
            3.输入大于6为的数,有字母和数字组成
            4.输入大于10的字母
6.参考资料:http://java.chinaitlab.com/base/741350.html

   validation.xml配置文件的标签:
   <form-validation></form-validation>是总框架
   <formset></formset>是对Form里的数据进行配置
   <form name="ActionForm对应的名称"></form>对一个ActionForm里的数据进行验证配置
   <field property="ActionForm里的属性名" depends="验证规则,可以是Validation-rules里定义好的
           也可以是自定义的验证规则">这里配置一个属性的验证内容
   <arg0 name="对应的验证规则名称" key="可以直接填入数值,也可填入变量表达式:${var:变量名}"       resource="true/false"(代表是否从资源文件中读取信息,否则Key的值以参数的形式返回)>
   <var></var>定义一个变量的标签体,可以在里面具体设置变量的名称以及数值
   <var-name>对应Key里定义的变量名称</var-name>
   <var-value>值</var-value>
   <msg name="对应的验证规则名称" key="资源文件中定义的变量名称">这里定义了信息变量后,
     会默认定义的信息变量。

你可能感兴趣的:(struts)