校验器的知识点有三部分。
第一部分介绍校验器关联的类。
第二部分介绍校验器的实现方式,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对象。