zoukankan      html  css  js  c++  java
  • 后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节33(数据绑定)

      数据绑定是将请求中的信息转换为Handler方法中的参数。在这个过程中包含请求信息的校验,数据类型的转换,数据格式的转换。

    1、数据校验

      mvc使用的数据校验是spring的校验功能,它支持三种形式

    1. 调用DataBinder对象的validator方法,mvc中为WebDataBinder
    2. 实现Validator接口,注册实现类。
    3. 使用JSR-303规范,hibernate validator是它的一种典型实现。

      第三种方式最常用,参考hibernate validator的官网,校验的结果通过Handler方法的Errors,BindingResult参数获取

    2、数据转换

      数据转换也是spring的功能,它分为以下两种情形:

    1. 字符串转换为对象,实现PropertyEditor接口,或者直接继承PropertyEditorSupport类,从字符串----->对象,实现setAsText。从对象------->字符串,实现getAsText。可以参考BooleanEditor。
    2. 对象转换为对象,又分为几种情形,参考spring的Converter, ConverterFactory接口。

    3、数据格式

      数据格式化也是spring的功能,Formatter接口实现了Printer接口和Parser接口,Printer接口是将对象格式化为字符串,Parser接口是将特定格式的字符串转换为对象。参考spring的Formatter。

    4、注册方式

      在spring中要使用校验器,格式化器,转换器,需要在spring的配置文件中配置,在mvc中可以通过WebDataBinder的API注册校验器,格式化器,转换器。

      代码如下: 

    @InitBinder
    public void initBinder(WebDataBinder binder) {
    	// 添加校验器,通常使用hibernate validator,基本不使用spring的validator接口
    	binder.addValidators(validators);
    	// 添加propertyEditor,字符串与对象之间的相互转换,  
    	// requiredType为对象类型,  propertyEditor为PropertyEditor接口的实现类
    	binder.registerCustomEditor(requiredType, propertyEditor);
    	// 添加转换器
    	ConversionServiceFactoryBean service  = new ConversionServiceFactoryBean();
    	service.setConverters(converters);
    	binder.setConversionService(service.getObject(););
    	// 添加格式化器
    	binder.addCustomFormatter(formatter);
    }
    

      注册方法通常是全局的,所以@initBinder方法通常放在@ControllerAdvice或@RestControllerAdvice标注的Controller类中(本质是切面)。

  • 相关阅读:
    一步一步学数据结构之(动态申请二维数组)
    运维自动化
    oracle查看登录到oracle服务器的客户端ip
    权限
    windows下使用SQLPLUS制作BAT执行SQL文件
    rsyslog传输type
    C经典实例
    mysql导出数据库数据及表结构
    解决oracle11g无法导出空表问题
    opennebula onenebula
  • 原文地址:https://www.cnblogs.com/rain144576/p/12902928.html
Copyright © 2011-2022 走看看