`

Struts 1.x | validator 动态验证框架

阅读更多

 Struts validator 动态验证框架

 

1) struts数据的检验分成客户端检验与服务器检验。客户端检验是避免用户输入非法的的数据 , 而服务器端检验通常是把

     用户输入的正确数据与数据库的数据进行对比,然后依然业务逻辑进行检验


2) 如果要进行服务器端检验可以在Action中进行,如果要进行客户端检验则可以利用js或struts中的commons-validator

    的检验框架进行检验


3) 利用commons-validator的检验框架的步骤:
          A:编写一个ActionForm,此ActionForm类由于参与commons-validator的检验框架所以一定要继承

              org.apache.struts.validator.ValidatorForm,注意不是

              org.apache.struts.validator.DynaValidatorActionForm;
          B:去掉该ValidatorForm中自动生成的validate,和reset方法(一定要去掉否则不会生效)
          C:在WebRoot下面找到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>


              复制到struts-config.xml到文件的message-resources节点下面


              <message-resources parameter="aptech.hotelManager.struts.ApplicationResources" />
               <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
                   <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                    /WEB-INF/validation.xml"/>
              </plug-in>
           D:把validator-rules.xml文件中下面内容复制到ApplicationResources.properties里面
                      # Struts Validator Error Messages
                      errors.required={0} is required.
                      errors.minlength={0} can not be less than {1} characters.
                      errors.maxlength={0} can not be greater than {1} characters.
                      errors.invalid={0} is invalid.

                      errors.byte={0} must be a byte.
                      errors.short={0} must be a short.
                      errors.integer={0} must be an integer.
                      errors.long={0} must be a long.
                      errors.float={0} must be a float.
                      errors.double={0} must be a double.

                      errors.date={0} is not a date.
                      errors.range={0} is not in the range {1} through {2}.
                      errors.creditcard={0} is an invalid credit card number.
                      errors.email={0} is an invalid e-mail address.
                  E: 如果想转换成为中文,可以利用native2ascii -encoding gb2312 源文件进行转换
                      但是关键字与参数一定不要变动
                  F: 在Action元素中增加validate="true" 与input="/检验末通过的目的页面"
                  H: 编写validation.xml文件,该文件一定要放在WebRoot下面

<form-validation>
 <formset>                                                //这里面可以放置多个ActionForm
   <form name="ruleActionForm">            //ActionForm的名字,此名字一定要与struts-config中定义的文件名一致
    <field property="uid" depends="required,maxlength">//要检证的字段名,depends指定要检验的检验器
                                                                                          //检验器可以有多少之间用逗号隔开
     <arg0 name="required" key="用户名" resource="false"/>
     <arg0 name="maxlength" key="用户名" resource="false"/>
     <arg1 name="maxlength" key="5" resource="false"/>
     <var>
      <var-name>maxlength</var-name>
      <var-value>5</var-value>   说明:
     </var>                   

 </field>

</form> 

</form-validation> 

    

A: arg0..argn用来给末通过检验时的出错信息提供参数值,该出错信息将使用默认的validator-rules.xml中定义的

         错误信息。如果想要自己定义错误信息可以使用msg格式。

         比如:<msg name="检验器名" key="出错信息"resource="false"/>                                        
                     

B:name:用来指定该参数将对应的那个检验器,一定要与检验器同名
                       

C:key:用来指定参数的值,resource="false"说明不通过资源文件直接指定值
                 

D:var用来为检验器指定检验的规则,大多数检验器都需要用户自己定义规则   
             

E:其中的var-name一定要与检验器同名,var-value用来指定规则值
                                 

F:<arg>参数可以省略name属性此时多个检验器共享arg中提供的参数值    比如:
                       <field property="uid" depends="required,mask">
                            <arg0 name="required" key="用户名" resource="false"/>
                            <arg0 name="mask" key="用户名" resource="false"/>
               可以改成:
                             <field property="uid" depends="required,mask">
                              <arg0  key="用户名" resource="false"/>表示当required检验失败时,会把"用户名"填充{0}
                                        errors.required={0} is required   而mask检验指失败时,同样会把"用户名"填充{0}
                                       errors.invalid={0} is invalid
              

 G:常见的检验器:
                   1:required必填。出错提示对应于errors.required={0} is required
                      不需要用户指定检验规则,一般配置如下
                       <field property="uid" depends="required">
                        <arg0 name="required" key="用户名" resource="false"/> 
                   2:mask。正则表达式。出错提示对应于errors.invalid={0} is invalid.
                      需要用户指定检验规则,一般配置如下
                        <form name="ruleActionForm">
                            <field property="uid" depends="required,mask">
                               <arg0 name="required" key="用户名" resource="false"/>
                               <arg0 name="mask" key="用户名" resource="false"/>//指定出错信息
                              <var> //指定规则,注意规则名一定要写mask
                                  <var-name>mask</var-name>
                                  <var-value>^[a-zA-Z0-9]{5,8}$</var-value>
                             </var>
                         </field>
                          </form>
                3:email。检查邮箱。出错提示对于 errors.email={0} is an invalid e-mail address
                         不需要指定检验规则。一般配置如下
                 <field property="email" depends="required,email">
                          <arg0 name="required" key="邮箱" resource="false"/>
                          <arg0 name="email" key="你输入的邮箱" resource="false"/>
                </field>
               4:intRange。检查一个数在某个范围之内。

                  出错提示对应于:errors.range={0} is not in the range {1} through {2}

                  需要用户指定规则。由于规则中涉汲到有多个值,所以需要用${var:变量名}的形式进行分别指定。

                 一般配置如下:

                  <field property="age" depends="intRange">
                           <arg0 name="intRange" key="年龄" resource="false"/>
                           <arg1 name="intRange" key="${var:max}" resource="false"/>
                             //${var:max}表示引用规则中的值。也可以直接写成
                             //<arg1 name="intRange" key="50" resource="false"/>
                          <arg2 name="intRange" key="${var:min}" resource="false"/>    
                                    <var> //规则名一定要与max与min。
                                    <var-name>max</var-name>
                                    <var-value>50</var-value>
                                    </var>         
                          <var>
                                   <var-name>min</var-name>
                                   <var-value>20</var-value>
                          </var>    
                </field>
         

5:validwhen。validwhen主要用于关联验证,即为了验证某个域的值,可能会参考其它域的值来进行综合判断

                      以确定该域的值是否符合要求.出错提示对应errors.required={0} is required.
     需要用户指定规则.一般配置格式:
         <field property="surePwd" depends="validwhen">
                    <msg name="validwhen"  key="两次输入的密码必须一致" resource="false"/>
                    <var>
                        <var-name>test</var-name>
                        <var-value>(*this*==pwd)</var-value>
                 </var>
        </field>
                说明:
                 1)在此使用<msg>用来自定义出错信息。

                    因为默认情况下validwhen对应的出错信息是errors.required={0},不能表达错误提示信息
                 2)<msg>中的name表示检验器名,key表示自定义的出错信息,resource="false"表示不
                   从资源文件中加载错信息
                 3)输入给validwhen的是一个布尔型表达式(对该表达式的解析使用了antlr)

                     其引用名为test,即形如:
                       <var>
                           <var-name>test</var-name>
                           <var-value>(expression)</var-name> //注意表达式一定要加括号
                       </var>
                     即,当expression为真(true)时,该域验证通过,其中,expression可以使用的元素包括:
             A:表单中其它域属性的名称,例如:
                   <var>
                        <var-name>test</var-name>
                         <var-value>(color=="red")</var-name>
                   </var>
                例子中color为表单中其它某个域的属性名。
             B:*this*,用于表示该域的属性名称,即对正在验证的属性自身,其变量的引用为*this*
             C:可以使用一些常规运算符,如 >、<、==、>=、<=、!=、+、-、*、/、%等等
       

6:date。判断是否是合法的日期.出错提示对应于errors.date={0} is not a date。需要自己定义规则.

             一般配置格式:
          <field property="dtm" depends="date">
                <arg0 name="date" key="日期" resource="false"/>
                <var>
                 <var-name>datePatternStrict</var-name> //规则名一定要是datePatternStrict
                             <var-value>yyyy-MM-dd</var-value>
                 </var>
           </field>


      H:如何显示错误信息:
          <logic:messagesPresent>  //如果存在错误
             <html:messages id="error">//依次遍历每个错误
               <li><bean:write name="error"/></li>
            </html:messages>
         </logic:messagesPresent>


      H:让struts在客户端进行验证:
           A:为jsp中的form元素增加onsubmit="return validate.XxxForm(this);"其中的XxxForm就是在
             struts-config.xml中配置的ActionForm的名字
           B:在</html:form>的后面增加<html:javascript formName="xxxForm" />
           C:但是validwhen不支持在客户端进行验证

              应用举例:
                1)让用户填写一个注册页面。
                2)用两种方法
                    A:弹出对话框
                    B:直接在注册页面的上面来显示末通过的提示
                                                 

    

分享到:
评论

相关推荐

    struts1.x validator框架验证入门例子

    Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,我们将深入理解Validator框架的基本概念、配置以及如何在实际项目中应用。 一、Validator框架简介 ...

    struts1.x使用common-validator验证框架

    此外,Struts1.x的验证框架不仅限于服务器端验证,也可以结合JavaScript进行客户端验证,以提高用户体验。客户端验证可以通过在JSP页面中引入Struts的JavaScript库,然后利用`&lt;html:javascript&gt;`标签生成相应的验证...

    struts1.x和struts2.x区别

    Struts1.x的验证机制基于ActionForm,利用Commons Validator等库进行数据校验,而Struts2.x则采用了更为强大的验证框架,如XWork Validator,支持链式验证和更复杂的验证规则,使得数据验证更加全面和细致。...

    java Struts 1.x 框架 Web 开发

    9. **Validator框架**:Struts 1.x 的Validator框架用于数据验证,可以定义一系列规则来检查ActionForm中的属性值,确保数据的正确性。 10. **生命周期管理**:Struts 1.x 使用Servlet容器管理Bean的生命周期,对于...

    Struts1.x的验证框架示例

    验证框架是Struts1.x的一个重要组成部分,用于处理用户输入数据的验证,确保数据的准确性和完整性。以下是对Struts1.x验证框架的详细说明: 1. **验证框架的引入** 在Struts1.x中,验证通常分为两个阶段:客户端...

    struts1.x apps 所有最新的Struts1.x项目应用

    5. **异常处理和验证**:学习如何利用Struts1.x的验证框架和异常处理机制来增强应用的健壮性。 6. **最佳实践**:学习社区推荐的最佳实践,避免常见的设计和安全陷阱。 总之,Struts1.x作为Java Web开发中的经典...

    搭建struts1.x的jar包

    Struts 1.x 是一个经典的Java Web开发框架,由Apache软件基金会开发,它极大地简化了MVC(模型-视图-控制器)架构的实现。如果你正在寻找如何搭建Struts 1.x的开发环境,以下是一些关键的知识点,以及这些指定的jar...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Struts1.x 中文帮助文档

    9. **Validator框架**:Struts1.x包含一个内置的验证框架,可以方便地验证用户输入,防止非法数据进入系统。 10. **Session和Request范围的对象管理**:Struts1.x提供了一种机制来管理请求和会话范围内的对象,避免...

    Struts1的validator验证框架

    ### Struts1的Validator验证框架详解 在Java Web开发领域,Struts1作为一个经典且流行的MVC框架,提供了丰富的功能来构建动态Web应用。其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能...

    struts的总结(struts1.x)

    Validator 插件是 Struts 1.x 中最常用的表单验证插件之一。它提供了丰富的验证规则和错误消息模板,大大简化了验证过程。要使用 Validator 插件,首先需要在 `struts-config.xml` 文件中进行配置,然后在 ...

    struts中使用validator验证框架

    Validator框架是Struts的一个重要组件,主要负责处理用户输入的数据验证,确保数据的完整性和正确性。在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先...

    struts2.x jar

    6. **验证框架**:`struts2-validation-plugin.jar`包含了基于Hibernate Validator的表单验证机制。 7. **测试库**:如`struts2-testng-plugin.jar`或`struts2-junit-plugin.jar`,用于单元测试和集成测试。 每个`...

    Struts Validator验证框架详细讲解.txt

    ### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...

    struts1,struts教程,struts1.x入门

    11. **Validator框架**:Struts1包含了一个内置的验证框架,可以用来验证用户输入的数据,提供了一种统一的验证规则定义方式。 通过上述知识点的学习,初学者可以快速掌握Struts1的基础操作,进行简单的Web应用开发...

    Struts1.x.pdf

    以上是对Struts 1.x框架的基本介绍及其在MVC设计模式中的具体实现方式,以及相关的构成元素和配置细节。通过深入理解这些内容,开发者可以更好地利用Struts框架构建高效、灵活且易于维护的Web应用程序。

    struts1验证框架相当好的经典例子

    接下来,我们需要配置Validator插件,这是Struts1验证框架的核心。通过`&lt;plug-in&gt;`标签,指定类名为`org.apache.struts.validator.ValidatorPlugIn`,并设置`pathnames`属性指向`validator-rules.xml`和`validation....

    struts validator验证框架项目

    Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据输入验证。这个项目集成了验证规则,使得开发者能够轻松地确保用户提交的数据符合预期的格式和约束,从而...

    struts验证器validator使用,以及自定义验证器

    Struts是Java Web开发中的一个流行MVC框架,它的核心组件之一是Validator,用于处理表单数据的验证。本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和...

    struts1.3实现的Validator简单验证

    Validator是Struts框架中的一个关键组件,用于处理用户输入验证,确保数据的有效性和一致性。在Struts1.3中,Validator功能得到了进一步的增强和优化,相比Struts1.2,它引入了一些新的特性和改进。 在Struts1.3中...

Global site tag (gtag.js) - Google Analytics