做网站都要掌握什么软件,网站建设模型,定制网站制作公司哪家好,专业建站推广企业数据绑定 数据绑定流程 springmvc框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例#xff0c;以创建DataBinder实例对象 DataBinder调用装配在springmvc上下文中的ConversionService组件进行数据类型转换、数据格式化工作。将Servlet中的请求信息… 数据绑定 数据绑定流程 springmvc框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例以创建DataBinder实例对象 DataBinder调用装配在springmvc上下文中的ConversionService组件进行数据类型转换、数据格式化工作。将Servlet中的请求信息填充到入参对象中 调用Vaildator组件对已经绑定了请求消息的入参对象进行数据合法性检验并最终生成数据绑定结果BindingData对象 springmvc抽取BindingResult中的入参对象和校验错误对象将他们赋给处理方法的响应入参 ConversionService org.springframework.core.convert.ConversionService是springmvc中进行数据类型转换的接口 public interface ConversionService { // 判断是否可以将一个java类转换为另一个java类 boolean canConvert(Class? sourceType, Class? targetType); // TypeDescriptor描述了需要转换类的信息和类的上下文信息 boolean canConvert(TypeDescriptor sourceType, TypeDescriptor targetType); // 将源类型对象转换为目标类型对象 T T convert(Object source, ClassT targetType); Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType);} 可以利用ConversionServiceFactoryBean来定义一个ConversionService其中包含了很多内置的类型转换器 public void afterPropertiesSet() { // 创建默认的conversionService this.conversionService createConversionService(); // 注册自定义的Converter ConversionServiceFactory.registerConverters(this.converters, this.conversionService);}// 创建默认的conversionService注册内置的转换器protected GenericConversionService createConversionService() { return new DefaultConversionService(); } 自定义类型转换器 可通过ConversionServiceFactoryBean的converters属性注册自定义的类型转换器 可以使用三种方式实现自定义类型转换器 实现ConverterS, T接口 public interface ConverterS, T { // 将S类型转为T类型 T convert(S var1);} Componentpublic class UserConverter implements ConverterString, User { Override public User convert(String s) { // 规则为每个字段使用:分隔,如果字段为null将null拼入串中(规则可以与前端定 这里就举个例子) if(s ! null !.equals(s)){ String[] values s.split(:); if(values ! null values.length 0){ User user new User(); if(null.equals(values[0])){ user.setId(0); } else { user.setId(Integer.parseInt(values[0])); } if(null.equals(values[1])){ user.setName(); } else { user.setName(values[1]); } return user; } } return null; }} 配置 !-- 配置自定义类型转换器 --bean idconversionService classorg.springframework.context.support.ConversionServiceFactoryBean property nameconverters list ref beanuserConverter/ /list /property/beanmvc:annotation-driven conversion-serviceconversionService/ RequestMapping(/testConverter)public String testConverter(User user){ System.out.println(user); return hello;} ConverterFactoryS,R ConverterFactory的作用是将相同系列的多个Converter封装在一起 public interface ConverterFactoryS, R { // S为转换的源类型R为目标类型的基类T为R的子类 T extends R ConverterS, T getConverter(ClassT targetType);} GenericConverter GenericConverter会根据源类对象及目标类对象的上下文进行类型转换 public interface GenericConverter { //ConvertiblePair中封装了源类型个目标类型 SetConvertiblePair getConvertibleTypes(); Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType);} https://zhhll.icu/2021/框架/springmvc/基础/2.数据绑定/ 本文由 mdnice 多平台发布