Validator框架是一个Struts插件,最初由David Winterfeldt设计并实现。Validator框架从Struts 0.5时代就可以使用,但那时Validator框架只是被捐助的一个jar包。Apache组织为了使开发人员更方便地使用Validator框架,决定从Struts1.1开始,将Validator框架作为Struts的一部分同Struts一起发布。
虽然Validator框架的预定义验证已经可以满足大多数的验证需求了,但在某些特殊情况下,这些预定义验证就无法满足我们的需求了,为此,Validator框架也为开发人员提供了扩展验证机制的功能。这也使得Validator框架可以完成更复杂的验证工作。
<!--[endif]-->
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml" />
</plug-in>
<!--[endif]-->
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validator1.xml,
/WEB-INF/validator2.xml, /WEB-INF/validator3.xml" />
</plug-in>
在本节将举一个例子来演示如何使用Validator框架来验证数据。我们需要按着如下的六步来完成这个例子:
【第1步】建立FirstValidatorForm类(ValidatorForm的子类)
import org.apache.struts.validator.ValidatorForm;
public class FirstValidatorForm extends ValidatorForm // 必须从ValidatorForm继承
{
private String name;
private String age;
private String email;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
}
<!--[endif]-->
在<samples工程目录>\src\action目录中建立一个ValidatorAction.java文件,代码如下:
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class ValidatorAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
response.setCharacterEncoding("GBK");
try
{
response.getWriter().println("验证成功!");
}
catch (Exception e)
{
}
return null;
}
}
【第3步】配置struts-config.xml文件
<action name="firstValidatorForm" path="/firstValidator" scope="request" type=" action.ValidatorAction" input="/firstValidator.jsp"/>
【第4步】建立firstValidator.jsp
在Web根目录建立一个firstValidator.jsp文件,代码如下:
<!--[endif]-->
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>第一个Validator程序</title>
</head>
<body>
<html:form action="firstValidator" >
姓 名:
<html:text property="name" /> <font color="red"><html:errors property="name"/></font><p>
年 龄:
<html:text property="age"/> <font color="red"><html:errors property="age"/></font><p>
EMail:
<html:text property="email"/> <font color="red"><html:errors property="email"/></font><p>
<html:submit value="提交"/>
</html:form>
</body>
</html>
【第5步】配置validator.xml文件
在本例中只使用了一个XML文件(validator.xml)来配置要验证的对象。validator.xml的代码如下:
<!--[endif]-->
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="firstValidatorForm">
<field property="name" depends="required,maxlength,minlength,mask">
<msg name="required" key="error.name.blank" />
<msg name="minlength" key="error.name.minLength" />
<msg name="maxlength" key="error.name.maxLength" />
<msg name="mask" key="error.name.alphanum" />
<arg name="minlength" key="${var:minlength}" position="0" resource="false" />
<arg name="maxlength" key="${var:maxlength}" position="0" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
</field>
<field property="age" depends="required,integer,intRange">
<msg name="required" key="error.age.blank" />
<msg name="integer" key="error.age.integer" />
<msg name="intRange" key="error.age.intRange" />
<arg name="intRange" key="${var:min}" position="0" resource="false" />
<arg name="intRange" key="${var:max}" position="1" resource="false" />
<var>
<var-name>min</var-name>
<var-value>18</var-value>
</var>
<var>
<var-name>max</var-name>
<var-value>60</var-value>
</var>
</field>
<field property="email" depends="required,email">
<msg name="required" key="error.email.blank" />
<msg name="email" key="error.email.invalid" />
</field>
</form>
</formset>
</form-validation>
打开ErrorDescription.properties文件,在文件的后面添加如下的内容:
error.name.minLength = 姓名的长度不能小于{0}
error.name.maxLength = 姓名的长度不能大于{0}
error.name.alphanum = 姓名必须由字母和数字组成
error.age.blank = 年龄不能为空
error.age.integer = 年龄必须为数字
error.age.intRange = 年龄必须在{0}和{1}之间
http://localhost:8080/samples/%20firstValidator.jsp
在输入一些错误信息后,点击“提交”按钮,将出现类似下图的效果。


















