/plug-in>
该定义告诉Struts为你的应用程序加载并初始化Validator插件。在初始化时,该插件装入由路径名属性指定的、用逗号分隔的Validator配置文件清单。每个配置文件的路径应该用与Web应用程序的相关的路径来指定,如前面的例子所示。
请注重,你的应用程序的struts-config.xml文件必须与Struts Configuration Document Type Definition(Struts配置文档类型定义,DTD)一致,后者规定文件中元素出现的顺序。所以,你必须把Validator插件定义放到该文件的适当位置。确保文件中元素适当排列的最简便方法就是使用诸如Struts Console的工具,它自动格式化你的配置文件,以便与DTD保持一致。
配置validator-rules.xml
Validator框架可以设置为可插入系统,其验证例行程序仅仅是插入到该系统中执行具体验证的Java方法。validator-rules.xml文件说明性地插入Validator用于执行验证的验证例行程序中。Struts示例应用程序带有这个文件的预配置拷贝。在大多数情况下,你不必修改这个预配置拷贝,除非你要向该框架中添加自己定制的验证。
清单1 是一个示例validator-rules.xml文件,说明如何将验证例行程序插入到Validator中。validator-rules.xml文件中的每个验证例行程序都有自己的定义,它用validator标记声明,利用name属性为该验证例行程序指定逻辑名,并指定该例行程序的类和方法。该例行程序的逻辑名称供该文件中的其他例行程序以及validation.xml文件中的验证定义用于引用该例行程序。
请注重,validator标记放在javascript的标记中,javascript标记用于定义客户端JavaScript代码,以便在客户端执行与服务器端相同的验证。
提供的验证程序
默认情况下,Validator中包括几个基本验证例行程序,你可以用它们来处理大多数验证问题。这些例行程序具有逻辑名称,如required(用于输入要求的值)、CreditCard(用于输入信用卡号码值)、email(用于输入电子邮件地址值),等等。
创建Form Bean
为了使用Validator,你的应用程序的Form Bean必须归到Validator的ActionForm的某一子类,而不是ActionForm本身。Validator的ActionForm子类提供了ActionForm的validate( )方法(它嵌入到Validator框架中)的实施过程。你不必从头编写验证代码并把它投入validate( )方法中,相反,可以完全忽略该方法,因为Validator为你提供了验证代码。
与Struts提供的核心功能相类似,Validator提供给你两种可供选择的方法来创建Form Bean。 你可以选择的第一种方法就是像下面这样创建一个特定的Form Bean对象:
package com.jamesholmes.minihr;
import org.apache.struts.validator
.ValidatorForm;
public class LogonForm extends ValidatorForm {
private String username;
private String passWord;
public String getUsername() {
return username;
}
public void setUsername(String
username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String
password) {
this.password = password;
}
}
这个类与你不是用Validator所创建的类相似,但它提供ValidatorForm而不是ActionForm。这个类也不提供ActionForm的空reset( )和validate( )方法的实施过程,因为ValidatorForm提供了相应过程。
在struts-config.xml文件中配置这个特定Form Bean的方法与配置正则Form Bean的方法相同:
form-beans>
form-bean name="LogonForm"
type="com.jamesholmes
.minihr.LogonForm"/>
/form-beans>
用表单标记的name属性给特定Form Bean指定的逻辑名是在定义validation.xml文件中的验证时所使用的名称,如下所示:
!DOCTYPE form-validation
PUBLIC "-//Apache Software Foundation//
DTD Commons Validator Rules
Configuration 1.0//EN"
"http://jakarta.apache.org/
commons/dtds/validator_1_0.dtd">
form-validation>
formset>
form name="LogonForm">
field property="username"
depends="required">
arg0 key="prompt.username"/>
/field>
/form>
/formset>
/form-validation>
Validator使用该表单标记的name属性的值将验证定义与要应用这些定义的Form Bean的名称相匹配。
创建Form Bean时可以选择的第二种方法是在struts-config.xml文件中定义一个动态Form Bean,如下所示:
form-beans>
form-bean name="LogonForm"
type="org.apache
.struts.validator.DynaValidatorForm">
form-property name="username"
type="java.lang.String"/>
form-property name="password"
type="java.lang.String"/>
/form-bean>
/form-beans>
动态Form Bean不要求创建特定的Form Bean对象;相反,要定义Form Bean应该具有的属性和类型,而Struts为你动态创建Form Bean。 Validator答应你使用这个概念,就像在核心Struts中使用这个概念一样。与使用