信息校念

作者在 2010-04-02 17:58:17 发布以下内容
信息校验

   1)使用JavaScript完成客户端校验:客户端进行,速度快

   2)在Action中使用Validate方法进行校验 例如

        public void validate() {

            //检查生日不能为空

            if(birthday==null || birthday.after(new Date()) ) {

                //写入校验信息

                addFieldError(“birthday”, “生日日期不正确!”) ; //采用该方法将数据校验异常信息加入到ActionContext

            }

}

采用该种方法,struts2会自动将异常信息显示在相应的输入位置上,并用红色提示用户重新输入。

实际上,<s:form>会自动显示该表单校验的异常信息,要显式异常信息,可以在页面中加入<s:fielderror />标签,该标签将会显示ActionContext中所有的异常信息。

3)在Action中使用validateXxx()方法对不同的业务处理方法进行数据输入校验

 

4)基于框架的输入校验

 定义:struts提供了一种基于框架文件的输入校验方式,将校验规则保存在特定的框架文件中,这样可以是输入校验同Action实现了分离,提供系统的维护性。

用法:建立一个特定的校验规则文件,为xml格式的配置文件,命名规则为

      Action名称-validation.xml

     保存在同Action实现类相同的目录下。

格式:

     i)字段校验格式如下

          <validators>

             <field name= “校验字段名称”>

                 <field-validator type=“校验类型”>

                      <param name= “参数1 > 参数值1 </param>

                      <param name= “参数2 > 参数值2</param>

                 </field-validator>

             </field>

          </validators>

ii)非字段校验格式如下:

          <validators>

                < validate  type=“校验类型”>

                      <param name= “fieldName”>字段名称 </param>

                      <param name= “参数1 > 参数值1 </param>

                      <param name= “参数2 > 参数值2</param>

                 </field-validator>

             </field>

          </validators>

 

弊端:校验异常显示界面的地址栏是*.action,即实际上已经经过框架将用户请求转发到Action

改进:使用客户端的输入校验,前面的校验规则文件不需要做改动,只要修改jsp视图代码即可。在jsp页面中定义

  <s:form id= “id” action= “ ”  validate= true >

     注意增加了红色部分。该种方法实际上把字段校验内容转换成了JavaScript

5Struts2框架的校验器

 xwork-2.0.4.jar中的com\opensymphony\xwork2\validator\validators\目录下的default.xml配置文件中定义了Struts框架内建的校验器。

 包含:必填校验器,必填字符串校验器,整数校验器,浮点校验器,日期校验器,表达式校验器,字段表达式校验器,电子邮件校验器,网址校验器,复合类型校验器,类型转换校验器,字符串长度校验器。

 注意:如果使用validators.xml配置文件,则系统默认的default.xml配置文件不会加载,所以需要将default.xml的内容复制到validators.xml配置文件中,否则不能使用系统内建的校验器。

a)类型转换校验器

     <validator type= “conversion” >

          <param name= “fieldName”> 字段名称 </param>

           

           //该参数指定当类型转换失败后,返回input页面时,表单是否保留原来的// 错误输入

           <param name= “repopulateField”>true or false </param>

          

<message>类型转换错误</message>

     </validator>

b)日期校验器

     <validator type= “date” >

          <param name= “fieldName”> 字段名称 </param>

           

           //要求日期的指定值在指定的范围内

               <param name="min">1990-01-01</param>

               <param name="max">2008-01-01</param>

                <message>框架校验:生日日期错误!</message>

  <message>生日必须在${min}${max}之间</message>

     </validator>

c)浮点数值校验器

     <validator type= “double” >

          <param name= “fieldName”> 字段名称 </param>

           //要求字段的指定值是否在所接受的指定的范围内

           <param name= “minInclusive”>20.1 </param>

           <param name= “maxInclusive”>50.1 </param>

<message>年龄必须在${minInclusive}${maxInclusive}之间</message>

 

           //要求字段的指定值是否在所排除的指定的范围内

           <param name= “minExclusive”>0.789 </param>

           <param name= “maxExclusive”>0.987</param>

<message>生日必须在${min}${max}之间</message>

     </validator>

 

d)邮件地址校验器:检查指定字符串字符非空时,是否为一个合法的邮件地址

     <validator type= “email” >

          <param name= “fieldName”> 字段名称 </param>

<message>非法的邮件地址</message>

     </validator>

 

e)表达式校验器:是一个非字段校验器,若表达式返回为true,则校验通过,否则不通过。

     <validator type= “expression” >

          <param name= “expression”> 使用OGNL表达式,并基于值栈计算 </param>

<message>Failed to meet ongl Expression </message>

     </validator>

 

f)字段表达式校验器:要求指定字段满足一个逻辑表达式。

     <validator type= “fieldexpression” >

         <param name= “fieldName”> 字段名称 </param>        

         <param name= “expression”> 使用OGNL表达式,并基于值栈计算 </param>

<message> </message>

     </validator>

 

g)整数校验器

     <validator type= “int”>

          <param name= “fieldName”> 字段名称 </param>

           

           //要求字段的整数值在指定的范围内

           <param name= “min”>20 </param>

           <param name= “max”>50 </param>

<message>年龄必须在${min}${max}之间</message>

     </validator>

 

h)必填校验器:用于校验字段是否为空

     <validator type= “required” >

   

默认分类 | 阅读 373 次
文章评论,共0条
游客请输入验证码