Struts-Validator验证框架。

  今天学习了Validator。前几次课学习了ActionForm 里面有一个方法是 validate();此方法可以在里面进行写验证代码。但是缺点就是如果我有很多ActionForm那岂不是要写死人。所以动态form(DynaActionForm)就出现了.但是要基于动态form验证。就有些麻烦了。

  Validator由David Winterfeldt 创建,它能比内集成到Struts框架中。主要负责数据的验证。其实验证代码不用写。就是配置多。

先聊聊使用Validator的好处。

1 可以在一处为程序定义一套完整的验证规则;

2 如果要修改或者定义新验证比较简单。

3 支持国际化

4 支持正则表达式

5 可以应用于WEB程序也可以英语于JAVA应用程序;

6 还有就是validator支持可插性(plugbability)


验证框架 validatorFrameWordk
原理 是把一些常用的验证规则  (validator-rules.xml) 固定下来
通过 XML文件(validation.xml)的配置 来指定哪个ActioniForm的 哪个属性 使用什么样的验证规则

步骤:

1  配置struts-config.xml 文件 让struts框架能够识别出验证框架
2   创建动态Form     换成   DynaValidatorForm 类 因为该类才会使用验证框架做验证
3  编写 validation.xml 文件 配置自己的验证规则


 

 

下来就行是我的作业:

还是很简单的验证。字段 用户名、密码 、年龄、邮箱

然后对这几个字段进行验证。

    首先配置struts-config.xml  让struts认识你的框架

 

 

2  创建动态form

注意org.apache.struts.validator.DynaValidatorForm

3 在WEB-INF下面创建3   validation.xml 

 

 

validator-rules.xml文件

validator-rules.xml文件定义应用程序可以使用的Validator。validator-rules.xml充当模板的作用,定义所有应用程序可能要用到的Validator。

下来解释一下里面的元素

validator默认有14中规则。这写规则被称为validator框架的基本规则

名称描述
byte,short,integer,long,float,double 检验值是否能被转换成对应的基本数据类型
creditCard检验输入域是否是一个合法的信用卡号码
date 检验输入域是否是一个合法日期
email检验输入是否是一个合法Email地址
mask检验输入域是否能成功匹配一个正则表达式
maxLength 检验值的长度是否小于等于给定的最大长度
minLength检验值的长度是否大于等于给定的最小长度
range 检验值的范围是否在最大值和最小值之间
required 检验输入域是否为不为空,或不包含空格值的长度是否大于零

 

 

 

1 formset

 

有属性 language和country

有元素constant 和form

 

2  form

有属性 name 这个name要和你的dynaVdlidtorForm名字相同

有元素 field

 

3  field

有属性 depends 这里面的值要对应“validator-rules.xml文件 ”的基本规则名

property对应表单dynaVdlidtorForm里面属性的名字

有元素  arg  msg

 

4 arg

有属性 name 对应 depends   key对应的是消息文本也就是资源文件里面的键

resource 意思是是否从资源文件里面找这个对应的key

position 对应资源文件里面得序列值

 

5 msg

 

有属性 name 对应 depends   key对应的是消息文本也就是资源文件里面的键

有属性 name 对应 depends   key对应的是消息文本也就是资源文件里面的键

resource默认为true

position 对应资源文件里面得序列值

 

6  var

 

里面有两个元素 一个是 var-name var-value 设置参数的值。或者规则表达式

 

 

框架客户端验证(javascript)页面

  1. <html:javascript formName="registForm"/>    
  2. <html:form action="regist.do" οnsubmit="return validateRegistForm(this)">   

但是郁闷的是页面天出

 

 

 

都是英文提示。很显然。在资源文件里面消息提示都是英文。那么要用国际化讲这些消息转化为utf-8

 

用到JDK自带的转码工具 native2ascii.exe 然后打开它输入你要提示的中文 转码后

  1. errors.required={0} /u4e0d/u80fd/u4e3a/u7a7a   
  2. errors.minlength={0} /u4e0d/u80fd/u5c11/u4e8e {1} /u4e2a/u5b57/u7b26   

但是要一个一个进行转码很麻烦 。当然可以尝试第二种将整个资源文件全部转码 具体是这样的

 

进入CMD   进入你资源文件所在的目录盘符  E:  然后打开 cd   资源文件路径  然后输入 native2ascii.exe  encoding utf-8 资源名 别名  转码成功后如下:
  1. errors.maxlength={0} /u4e0d/u80fd/u5927/u4e8e {1} /u4e2a/u5b57/u7b26   
  2. errors.invalid={0} /u662f/u975e/u6cd5/u7684   
  3. errors.validwhen={0} /u4e0e {1} /u4e0d/u5339/u914d   
  4.   
  5. errors.date={0} /u4e0d/u7b26/u5408/u65e5/u671f/u683c/u5f0f   
  6. errors.email={0} /u4e0d/u662f/u5408/u6cd5/u7684/u7535/u5b50/u90ae/u7bb1   
  7.   
  8. emp.username=/u7528/u6237/u540d   
  9. emp.password=/u5bc6/u7801   
  10. emp.repassword=/u786e/u8ba4/u5bc6/u7801   
  11. emp.birthday=/u51fa/u751f/u65e5/u671f   
  12. emp.email=/u7535/u5b50/u90ae/u7bb1   
  13. emp.mobile=/u624b/u673a/u53f7  

  结束了。交作业。

 

 

 

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值