zoukankan      html  css  js  c++  java
  • 后端——框架——容器框架——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对象。

  • 相关阅读:
    STL的相关知识
    有关欧拉通路/回路的一些资料整理
    差分约束
    BZOJ 2100: [Usaco2010 Dec]Apple Delivery
    BZOJ 2017: [Usaco2009 Nov]硬币游戏(A Coin Game)
    vijos 1282&1283&1284&1285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
    BZOJ 1660: [Usaco2006 Nov]Bad Hair Day
    BZOJ 1602: [Usaco2008 Oct]牧场行走
    BZOJ 1647: [Usaco2007 Open]Fliptile 翻格子游戏
    BZOJ 1646: [Usaco2007 Open]Catch That Cow
  • 原文地址:https://www.cnblogs.com/rain144576/p/14758664.html
Copyright © 2011-2022 走看看