JavaWeb----学习(37)----struts2----自定义验证器
1.自定义验证器必须实现 Validator 接口.
ValidatorSupport 和 FieldValidatorSupport 实现了 Validator 接口
>若需要普通的验证程序, 可以继承 ValidatorSupport 类
>若需要创建字段验证的验证器,需要继承FirldValidatorSupport类
2. 配置文件配置验证器。
2.1 默认情况下,struts2会在类路径的根目录下加载validators.xml文件,在该文件中加载验证器。
该按文件中的定义方式同默认的验证器的配置文件相同:
com.opensymphony.xwork2.validator.validators 下的 default.xml
2.2 若在类路径下没有指定的验证器。会从 com.opensymphony.xwork2.validator.validators 下的 default.xml加载。
2.3 使用。
例子:自定义验证器
package com.lishenhuan.Action;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class IDCardValidator extends FieldValidatorSupport {
@Override
public void validate(Object paramObject) throws ValidationException {
//1.获取验证字段的名字和值
String fieldName = getFieldName();
Object value = getFieldValue(fieldName, paramObject);
//2.验证
IDCard idCard = new IDCard();
boolean resule = idCard.Verify((String)value);
//3.添加验证失败后的消息
if(!resule){
addFieldError(fieldName, paramObject);
}
}
}
配置验证器配置文件: validators.xml(在类路径的根目录下)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
<validator name="idcard" class="com.lishenhuan.Action.IDCardValidator"></validator>
</validators>
使用自定义验证器: ValidationAction-validation.xml(ValidationAction.java文件统一目录)
<field name="idcard">
<field-validator type="idcard">
<message>it is not a idcard</message>
</field-validator>
</field>
jsp:
<s:textfield name="idcard" label="IDcard"></s:textfield>
目录结构: