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对象。

  • 相关阅读:
    STDMETHOD_,STDMETHOD,__declspec(novtable)和__declspec(selectany)
    __stdcall 与 __cdecl
    winows 进程通信的实例详解
    Windows 下多线程编程技术
    MFC/VC++ UI界面美化技术
    VC++中 wstring和string的互相转换实现
    VS2010项目转化为VS2008项目
    VC++ 响应回车键的2种方法
    高效 告别996,开启java高效编程之门 2-4实战:单一条件参数化
    高效 告别996,开启java高效编程之门 2-3实战:硬编码业务逻辑
  • 原文地址:https://www.cnblogs.com/rain144576/p/14758664.html
Copyright © 2011-2022 走看看