http://blog.java-cn.com/user1/5423/archives/2006/34972.html
1. 使用Struts validator 验证表单数据
关于Struts validator的文章网上有很多篇,个人认为比较全面的一篇是 《truts Validator验证器使用指南》。在我的这个项目中采用DynaValidatorForm进行验证。服务器端验证方式。
DynaValidatorForm在运行时会自动对提交的表单进行封装,根据配置文件进行某些输入数据进行自定义的验证。
2. 用一个用户注册来学习具体操作
页面表单有三个输入字段,1.用户名称,2.用户密码,3.确认用户密码。采用struts 标签。和资源文件显示。
输入要求为:
用户名称字数只能是3到20,用正则表达匹配包括下划线的任何单词字符。
确认用户密码、用户密码字数只能是6到50,任何字符,且两次输入密码相同。
a).用eclipse新建一个WEB项目。在myeclipse中添加struts。新建一个Form Action & jsp,向struts中添加validator验证器插件,添加三个form properties分别是用户名称,用户密码,确认用户密码。
原文件如下:
:
:
:
b). 打开struts的配置文件struts-config.xml文件,会发现其的内容为(这些内容是eclipse自动添加进去):注意有颜色字
org.apache.struts.validator.DynaValidatorForm">动态验证和自动封装Form,这里还有其他几种选择,也可自己写FormBean。
attribute="registerForm"
input="/register.jsp"
name="registerForm" 对应的FormBean的名称。
path="/register"
scope="request"
type="com.iceyb.struts.action.RegisterAction">处理Action的类。
ApplicationResources" /> 采用资源文件,资源文件放在/WEB-INF/class下面。路径可以自己定义。
以下是validator插件
c). 做完了以上的工作后,重点进行validator的配置。主要是两个文件validator-rules.xml ,validation.xml。在validation.xml中的验证器调用validator-rules.xml的规则来验证数据。
d). validation.xml, validator-rules.xml怎样协同工作的呢?主要是通过validation.xml中的的depends来决定调用validator-rules.xml哪条规则来验证。
e).在这里要自定义一条规则来验证两次输入的数据是否相同类。在validator-rules.xml中随便找一条规则,再在Struts源码包中找到对应的类。如:org.apache.struts.validator.FieldChecks
f).根据org.apache.struts.validator.FieldChecks类写一个自己的类StrutsValidator,在该类中定义一个方法validateTwoFields来验证是否两次输入数据相同。
/**
* 2006-6-22 11:45:30
*
*/
package com.iceyb.struts.validator;
import java.lang.Object;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.util.*;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.validator.Resources;
import org.apache.struts.action.ActionMessages;
import javax.servlet.http.HttpServletRequest;
/**
* @author YuanBin
*
* @version 1.0
*
*/
public class StrutsValidator {
public static boolean validateTwoFields(Object bean,
ValidatorAction va,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request){
String value = ValidatorUtils.getValueAsString( bean, field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String value2 = ValidatorUtils.getValueAsString( bean, sProperty2);
if (!GenericValidator.isBlankOrNull(value)) {
try {
if (!value.equals(value2)) {
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
return false;
}
}
g).写这个类后,将在validator-rules.xml中用这个类配置成一条规则。如下:
<!--user define validator-->
classname="com.iceyb.struts.validator.StrutsValidator"
method="validateTwoFields"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.twofields"/>
h).在validation.xml文件中配置使用:
mask
^w+$
minlength
3
maxlength
20
minlength
6
maxlength
50
secondProperty
password
好了,现在就已经完成了struts validator的配置和使用。struts validator还能实现更复杂的验证,在这里就不全记上。写下自己的学习过程,写下用来忘记的知识。
[@more@]http://blog.java-cn.com/user1/5423/archives/2006/34972.html
1. 使用Struts validator 验证表单数据
关于Struts validator的文章网上有很多篇,个人认为比较全面的一篇是 《truts Validator验证器使用指南》。在我的这个项目中采用DynaValidatorForm进行验证。服务器端验证方式。
DynaValidatorForm在运行时会自动对提交的表单进行封装,根据配置文件进行某些输入数据进行自定义的验证。
2. 用一个用户注册来学习具体操作
页面表单有三个输入字段,1.用户名称,2.用户密码,3.确认用户密码。采用struts 标签。和资源文件显示。
输入要求为:
用户名称字数只能是3到20,用正则表达匹配包括下划线的任何单词字符。
确认用户密码、用户密码字数只能是6到50,任何字符,且两次输入密码相同。
a).用eclipse新建一个WEB项目。在myeclipse中添加struts。新建一个Form Action & jsp,向struts中添加validator验证器插件,添加三个form properties分别是用户名称,用户密码,确认用户密码。
原文件如下:
:
:
:
b). 打开struts的配置文件struts-config.xml文件,会发现其的内容为(这些内容是eclipse自动添加进去):注意有颜色字
org.apache.struts.validator.DynaValidatorForm">动态验证和自动封装Form,这里还有其他几种选择,也可自己写FormBean。
attribute="registerForm"
input="/register.jsp"
name="registerForm" 对应的FormBean的名称。
path="/register"
scope="request"
type="com.iceyb.struts.action.RegisterAction">处理Action的类。
ApplicationResources" /> 采用资源文件,资源文件放在/WEB-INF/class下面。路径可以自己定义。
以下是validator插件
c). 做完了以上的工作后,重点进行validator的配置。主要是两个文件validator-rules.xml ,validation.xml。在validation.xml中的验证器调用validator-rules.xml的规则来验证数据。
d). validation.xml, validator-rules.xml怎样协同工作的呢?主要是通过validation.xml中的的depends来决定调用validator-rules.xml哪条规则来验证。
e).在这里要自定义一条规则来验证两次输入的数据是否相同类。在validator-rules.xml中随便找一条规则,再在Struts源码包中找到对应的类。如:org.apache.struts.validator.FieldChecks
f).根据org.apache.struts.validator.FieldChecks类写一个自己的类StrutsValidator,在该类中定义一个方法validateTwoFields来验证是否两次输入数据相同。
/**
* 2006-6-22 11:45:30
*
*/
package com.iceyb.struts.validator;
import java.lang.Object;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.util.*;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.validator.Resources;
import org.apache.struts.action.ActionMessages;
import javax.servlet.http.HttpServletRequest;
/**
* @author YuanBin
*
* @version 1.0
*
*/
public class StrutsValidator {
public static boolean validateTwoFields(Object bean,
ValidatorAction va,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request){
String value = ValidatorUtils.getValueAsString( bean, field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String value2 = ValidatorUtils.getValueAsString( bean, sProperty2);
if (!GenericValidator.isBlankOrNull(value)) {
try {
if (!value.equals(value2)) {
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
} catch (Exception e) {
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
return false;
}
}
return false;
}
}
g).写这个类后,将在validator-rules.xml中用这个类配置成一条规则。如下:
<!--user define validator-->
classname="com.iceyb.struts.validator.StrutsValidator"
method="validateTwoFields"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.twofields"/>
h).在validation.xml文件中配置使用:
mask
^w+$
minlength
3
maxlength
20
minlength
6
maxlength
50
secondProperty
password
好了,现在就已经完成了struts validator的配置和使用。struts validator还能实现更复杂的验证,在这里就不全记上。写下自己的学习过程,写下用来忘记的知识。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/164902/viewspace-926594/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/164902/viewspace-926594/