日历

2008 11.19 Wed
      1
2345678
9101112131415
16171819202122
23242526272829
30      
«» 2008 - 11 «»

文章搜索

日志文章

2008年03月24日 12:00:10

利用Struts的Validator验证框架实现客户端和服务器端双验证

Struts的Validator验证框架定义了常用的十几个验证规则,如:required(验证非空)minlength(验证最小长度)maxlength(验证最大长度)intRange(验证整形范围)email(验证电子邮件地址)date(验证日期)等,并且实现了客户端的Javascript验证和服务器端验证,以下是在myeclipse环境下使用Validator验证框架的步骤:
一、 创建基于Struts的web工程后,validator-rules.xml中以下代码拷贝到资源文件中

# 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.

二、将validator-rules.xml中以下代码拷贝到struts-config.xml配置文件中,验证框架将以插件形式被注入struts框架

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
      value="/WEB-INF/validator-rules.xml,
        /WEB-INF/validation.xml"/>
</plug-in>

三、创建validation.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0.1//EN"
"validator_1_0_1.dtd" >
<form-validation>
<formset><!—配置特定于FormBean的验证-à
<form name="loginActionForm">
  <!—name:属性对应struts-config.xmlFormBean的名字-à
  <field property="login" depends="required">
  <!—field:要验证的字段,即属性,depends:依赖的验证规则à
  <arg0 key="loginActionForm.login"/>
    <!—arg0:在资源包中配置错误消息的{0}参数值à
  </field>
  <field property="password" depends="required,minlength">
  <!—多个验证规则用逗号分割à
  <arg0 key="loginActionForm.password"/>
  <arg1 key="#{var:minlength}" resource="false"/>
  <!—resource:falsekey的值不在资源包中给出,而是在本文件 给-à
  <var>
    <!—定义变量,给上面的key所用à
    <var-name>minlength</var-name>
    <var-value>6</var-value>
  </var>
  </field>
</form>
</formset>
</form-validation>


四、实现客户端的javascript验证,只需在
<form onSubmit=”return validateLonginActionForm(this);”>
配置提交事件和使用
<html:javascript formName=”loginActionForm”/>
<body>
<font color="red">
<html:errors/>
</font>  
<html:form action="/login.do"
  onsubmit="return validateLoginActionForm(this);">
Login:<html:text property="login" /><br>
Password:<html:text property="password" /><br>
<html:submit/>
</html:form>
<html:javascript formName="loginActionForm"/>
</body>
----------------------------------------------------------------
框架能够克服在ActionForm Bean中以编程方式进行数据验证的局限,它允许Struts应用灵活的配置验证规则,无需编程。
Validator框架主要依赖两个JAR文件:jakarta-oro.jar和commons-validator,.jar
Validator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rules.xml和validation.xml。
Validator-rules.xml文件保换了一组通用的验证规则,对所有的Struts应用都适用。一般情况下,没有必要修改该文件,除非需要修改或扩展默认的规则。
元素有7个属性:
Name属性:name属性指定验证规则的逻辑名,这个名字必须是唯一的。
Classname和method属性:classname和method属性分别指定实现验证规则逻辑的类和方法。
MethodParams:属性用来指定验证方法包含的参数,多个参数之间以逗号隔开。
Msg属性:msg属性指定来自于Resource Bundle中的消息key。当验证失败时,Validator框架将根据这个消息key到resource Bundle中查找匹配的消息文本。
Depends属性:depends属性指定在调用当前验证规则之前必须先调用的其他验证规则。
Validator框架提供了基本的,通用的验证规则,对struts应用以及非Struts应用都适用。Org.apache.commons.validator.GenericValidator类提供了一组实现这些规则的静态方法。
GenericValidator类的验证方法:
isBlankOrNull: 验证字段是否为null,或者长度是否为0。
isByte:验证字段是否可以被转换为有小的byte类型的数据。
isCreditCard:验证字段是否为有效的信用卡号。
isDate:验证字段是否为有效的日期。
isDouble:验证字段是否可以被转换成有效的double类型的数据。
isEmail:验证字段是否为有效的Email地址。
isFloat:验证字段是否可以被转换为有效的float类型的数据。
isInRange:雁阵谷子断时候借于最小值和最大值之间。
isInt:验证字段是否可以被转换为有效的int类型的数据。
isLong:验证字段是否可以被转换为有效的long类型的数据。
isShort:验证字段是否可以被转换为有效的short类型的数据。
matchTegexp:验证字段是否和正规表达式匹配。
maxLength:验证字段时候小于或等于最大值。
minLength:验证字段时候大于或等于最小值。
在Struts框架中定义了专门用于验证表单字段的org.apache.struts.validator.FieldChecks类,它提供了和GenericValidator类似的方法。以下是FieldChecks类包含的验证方法:
validateByte
validateCreditCard
validateDate
validateDouble
validateEmail
validateFloat
validateInteger
validateLong
validateMask
validateMinLength
validateMaxLength
validateRange
validateRequired
validateShort
validation.xml文件:
这个文件是针对于某个具体Struts应用的,需要开发人员来创建,它可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
Validator框架不能用于验证标准的org.apache.struts.action.ActionForm类。如果要使用Validator框架应该采用ActionForm类的两个子类:DynavalidatorForm和ValidatorForm。
Validator框架可以进行浏览器客户端验证。如果要进行客户端验证,需要用到Struts的标签,它能够在JSP网页中生成用于客户端验证的JavaScript教本。




Tags: Struts   validator  

类别: struts |  评论(0) |  浏览(651) |  收藏
发表评论
看不清楚,换一张