n
(http://localhost/123/validate/customervalidate/input.jsp)
n
在
struts1.1
中创建一个自定义的验证,验证一个字段的值是否和另一个字段的值相等。
1.
创建一个包含一个实现规则接口的静态方法的类。
CunstomValidatorRules.java;
package com.oreilly.strutsckbk.ch08;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.validator.Resources;
public class CustomValidatorRules {
public static boolean validateTwoFields( Object bean,
ValidatorAction va,
Field field,
ActionErrors errors,
HttpServletRequest
request ) {
String value = ValidatorUtils.getValueAsString(bean, field.getProperty( ));//
得到字段名的方法
1
String sProperty2 = field.getVarValue("secondProperty");//
得到字段名的方法
2
String value2 = ValidatorUtils.getValueAsString(bean,
sProperty2);
//
得到字段的值的方法
if (!GenericValidator.isBlankOrNull(value)) {
try {
if (!value.equals(value2)) {
errors.add(
field.getKey( ),
Resources.getActionError(request, va, field));
return false;
}
} catch (Exception e) {
errors.add(
field.getKey( ),
Resources.getActionError(request, va, field));
return false;
}
}
return true;
}
}
2.
在
validator-rules.xml
中在
global
元素下添加
validator
子元素:
validator-rules.xml:
<validator name="twofields"
classname="com.oreilly.strutsckbk.ch08.CustomValidatorRules"
method="validateTwoFields"