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>

 目录结构:

猜你喜欢

转载自blog.csdn.net/lsh15846393847/article/details/87971275
今日推荐