zoukankan      html  css  js  c++  java
  • Validator验证框架使用教程

    Terry原创,转载请说明作者及出处。
    使用平台:Eclipse3.2+MyEclipse5.01GA

    首先,Validator验证框架最好要在Struts1.2下使用,当然在Struts1.1下也是可行的,只是在Struts1.2下能支持得更好。

    在Struts-Config.xml配置文件里添加插件,或是把下面的文本内容复制到Struts-Config.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>

    在MyEclipse下建立validation.xml的步骤如下:
    在项目的根目录处点击鼠标右键,选择新建“XML(Basic Templates)”,在弹出的窗口中选择“Create XML file from a DTD file”下一步,将文件目录设置到WEB-INF下,文件名取为“validation.xml”下一步;在这里点击“Select XML Catalog entry”选项,并选择KEY名为“-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN”的选项,下一步;此处已经不需要再设置什么,直接点击“Finish”完成validation.xml的建立,通过这样的建立文件,在编辑过程中输入"<"符号后,编辑器就会自动查找与当前结构匹配的Validator标签。


    下面介绍一下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="资源文件中定义的变量名称">这里定义了信息变量后,会默认定义的信息变量。
    在验证规则中大部分可以使用已经预定义好的规则,它们在validator-rules.xml里,当然我们自己也可以定义规则。


    实例如下:
    <form-validation>
        <formset>
          <form name="employeeActionForm">
          <field property="vname" depends="required,maxlength">
            <arg0 key="employee.name"/>
            <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
            <var>
              <var-name>maxlength</var-name>
              <var-value>10</var-value>
            </var>
          </field>
          <field property="vsex" depends="required,maxlength">
            <arg0 key="employee.sex"/>
            <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
            <var>
              <var-name>maxlength</var-name>
              <var-value>5</var-value>
            </var>
          </field>
          <field property="vage" depends="required,integer,intRange">
            <arg0 key="employee.age"/>
            <arg1 name="intRange" key="${var:min}" resource="false"/>
            <arg2 name="intRange" key="${var:max}" resource="false"/>
            <var>
              <var-name>min</var-name>
              <var-value>1</var-value>
            </var>
            <var>
              <var-name>max</var-name>
              <var-value>100</var-value>
            </var>
          </field>
          <field property="vmoney" depends="integer">
            <arg0 key="employee.money"/>
          </field>
          </form>
        </formset>
    </form-validation>


    要想在ActionForm里应用上Validator框架,就必须继承ValidatorForm类;
    在MyEclipse下新建ActionForm时可以将其SuperClass设置为“org.apache.struts.validator.ValidatorForm”
    如果是已经建好的ActionForm要改为使用Validator验证需如下操作:
    导入org.apache.struts.validator.ValidatorForm包,将类ActionForm扩展类从原先的ActionForm改为ValidatorForm
    而原先的public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)和
    public ActionErrors validate(ActionMapping mapping, ServletRequest request)
    以及Reset方法去除即可。


    应用程序全局资源文件:ApplicationResources.properties
    可以在文件里添加错误提示信息,格式为:
    变量名:提示文本(注:若要使用中文信息则要在转换之前将中文的文本填写完,转换后文件名后需要加上_zh_CN才会被系统识别为简体中文)
    内容如下:
    employee.name=员工姓名
    employee.sex=员工性别
    employee.age=员工年龄
    employee.money=期望薪金
    errors.required={0}不能为空,请填写!
    errors.integer={0}必需为一个整数值
    errors.range={0}必需为1~100之间的一个数字
    errors.maxlength={0}的最大数不能越过{1}!
    注:若需要换行可以在文本后面加上"<br>";

    以上的例子只是说明了资源文件的使用方法,但是如果就想这样来显示中文提示信息是不可行的,


    转换的命令是:
    native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh_CN.properties

    native2ascii命令是Java JDK目录下BIN目录里的一个可执行文件,若发现不能执行,请修改系统环境变量,即在Path变量里加入"X:\...\jdk1.5.1\bin;",修改完需要重新启动系统所配置的环境变量才可生效。
    可将命令制作成批命令,注意:转换格式后,在工程里需要手动刷新文件,否则项目不会识别你所做的改动


    到这里Validator验证框架的所有配置已经完成此时你只要在页面相应位置放入<html:errors/>标签即可显示,这样是将所有的错误在同一个地方显示,若想实在在每个输入控件后面显示错误提示,就必须手动设置标签的属性,如:<html:errors property="XXX">
  • 相关阅读:
    [hdu4585]离线,并查集
    [hdu4498]离散化,simpson求积分
    nginx防止跳转到内网解决
    docker 导入导出
    java rsa 解密报:javax.crypto.BadPaddingException: Decryption error
    algid parse error, not a sequence错误
    AttributeError: module 'Crypto.PublicKey.RSA' has no attribute 'import_key'
    No module named 'winrandom'。
    centos同步时间
    bean 属性排列顺序
  • 原文地址:https://www.cnblogs.com/jamin/p/1212017.html
Copyright © 2011-2022 走看看