后端——框架——容器框架——spring_core——校验器

  校验器的知识点有三部分。

第一部分介绍校验器关联的类。

第二部分介绍校验器的实现方式,Hibernate validator(略)。代码方式实现Validator接口。

第三部分示例。

1、类

Validator接口,自定义校验器实现此接口,它有两个方法

supports:用于判断校验器适用于哪些对象。

validate:实现校验功能的逻辑,第一个参数为校验对象,第二个参数为校验的结果。

DataBinder,管理Validator,注册,移除等。

ValidationUtils,工具类,提供基本数据类型和集合类型的常见校验,例如字符串是否为空。

2、实现方式

集成HibernateValidator,略。

2.1   Validator接口

步骤如下:

第一步,编写自定义校验器,实现support,validate方法。

第二步,注册Validator,调用DataBinder的addValidator方法。web中添加initBinder注解,实现initBinder方法。

第三步,验证。

3、示例

编写校验器较为简单,略。后续步骤示例如下:

public static void testDataBinder() {
	ApplicationContext context = getContext();
	// 获取User对象
	User user = context.getBean("singleton_user", User.class);
	// 创建DataBinder对象
	DataBinder binder = new DataBinder(user);
	// 注册validator
	binder.addValidators(new UserValidator());
	// 校验
	binder.validate();
	// 获取结果
	BindingResult result = binder.getBindingResult();
	// 获取
	List<FieldError> errors = result.getFieldErrors();
	// 输出User对象
	System.out.println(user.toString());
	// 遍历错误
	for (FieldError error : errors) {
		System.out.println(error.getField() + ": " + error.getCode());
	}
}

  web示例:通常放在@RestController标注的Controller

@RestController
public class MyController {
    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        // 添加自定义校验器,在方法中添加Errors参数对象,获取校验结果
        binder.addValidators(new XXValidator());
    }
}

  获取校验结果,在Handler方法中获取Errors对象。

原文地址:https://www.cnblogs.com/rain144576/p/14758664.html