zoukankan      html  css  js  c++  java
  • SpringMVC 数据绑定流程

    数据绑定流程

    一、SpringMVC主框架将ServletRequest 及目标方法入参实例传递给WebDataBinderFactory 实例以创建DataBinder实例对象。

    二、DataBinder 调用装配在SpringMVC上下文中的ConversionService 进行数据类型转换、数据格式化工作。将Servlet中的请求信息填充到入参对象中。

    三、调用Validator 组件对已经绑定了请求消息的入参对象的进行数据的合法性校验,并生成最终数据绑定结果BindingData对象。

    四、SpringMVC抽取BindinResult 中的入参对象和校验错误对象进行,将他们赋给处理方法的响应入参。

    //org.springframework.web.method.annotation.ModelAttributeMethodProcessor 中的代码
    
         WebDataBinder binder = binderFactory.createBinder(webRequest, attribute, name);
            if (binder.getTarget() != null) {
                if (!mavContainer.isBindingDisabled(name)) {
                    bindRequestParameters(binder, webRequest);//这行代码进行请求参数绑定,执行这行代码会调用类型转换器。
                }
                validateIfApplicable(binder, parameter);//这行代码进行数据校验
                if (binder.getBindingResult().hasErrors() && isBindExceptionRequired(binder, parameter)) {
                    throw new BindException(binder.getBindingResult());
                }
            }
  • 相关阅读:
    浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现(一)
    可变与不可变类型(一)
    查看虚拟机版本
    无法应用原保存的显示器配置
    uname -a输出内容分析
    Python 模块
    Python 函数(三)
    Python 函数(二)
    Python 函数(一)
    5-26 单词长度
  • 原文地址:https://www.cnblogs.com/GooPolaris/p/7919702.html
Copyright © 2011-2022 走看看