【Java后端开发必看】:@InitBinder自定义日期绑定的5个最佳实践

第一章:@InitBinder在Spring MVC中的核心作用

@InitBinder 是 Spring MVC 中一个关键的注解,用于配置控制器级别或全局的数据绑定规则。它允许开发者自定义请求参数与 Java 对象之间的转换逻辑,特别是在处理日期格式、字符串清理或自定义类型转换时发挥重要作用。

数据绑定的定制化控制

通过 @InitBinder 注解的方法,可以注册自定义的 PropertyEditor 或使用 WebDataBinder 添加 Converter 和 Formatter,从而影响表单提交或 URL 参数到控制器方法参数的绑定过程。

// 示例:在控制器中配置日期格式化
@InitBinder
public void initBinder(WebDataBinder binder) {
    // 注册日期格式化器
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    dateFormat.setLenient(false);
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}

上述代码将确保所有传入的日期字符串按照指定格式进行解析,若格式不正确则抛出绑定异常。

限制字段可绑定范围

为防止过度提交(Overposting)攻击,@InitBinder 还可用于限制哪些字段允许被绑定:

@InitBinder
public void restrictBinding(WebDataBinder binder) {
    // 禁止绑定 id 字段,防止恶意修改主键
    binder.setDisallowedFields("id");
}
  • 每个控制器内声明的 @InitBinder 方法仅作用于该控制器
  • 若需全局生效,应将其定义在标注 @ControllerAdvice 的类中
  • 支持多个 @InitBinder 方法共存,执行顺序取决于方法声明顺序
特性说明
注解位置必须标注在返回值为 void 且参数为 WebDataBinder 的方法上
执行时机每次请求进入控制器方法前自动触发
典型用途字段过滤、类型转换、格式化注册

第二章:理解@InitBinder与数据绑定机制

2.1 @InitBinder注解的工作原理剖析

`@InitBinder` 是 Spring MVC 中用于配置数据绑定规则的核心注解,它作用于控制器方法,允许开发者自定义 `WebDataBinder` 实例,从而控制请求参数到 Java 对象的转换过程。
执行时机与作用域
该注解标注的方法在每次 HTTP 请求进入控制器时被调用,优先于 `@RequestMapping` 方法执行。其作用范围仅限于声明它的控制器类,若需全局生效,应结合 `@ControllerAdvice` 使用。
@InitBinder
public void configureBinder(WebDataBinder binder) {
    binder.setDisallowedFields("id"); // 禁止绑定特定字段
    binder.registerCustomEditor(Date.class, new CustomDateEditor(...));
}
上述代码阻止 `id` 字段的自动绑定,并注册了 `Date` 类型的自定义编辑器,实现字符串到日期的转换。
核心功能支持
  • 字段绑定控制:通过 setAllowedFields 或 setDisallowedFields 限制可绑定属性
  • 类型转换注册:使用 registerCustomEditor 注入自定义类型转换逻辑
  • 验证器绑定:通过 addValidators 关联数据校验器

2.2 WebDataBinder与类型转换器的关系解析

WebDataBinder 是 Spring MVC 中用于数据绑定的核心组件,它负责将 HTTP 请求参数与目标对象的属性进行绑定。在此过程中,类型转换器(Converter/Formatter)扮演着关键角色。
数据绑定与转换的协作流程
WebDataBinder 内部持有一个 ConversionService 实例,在绑定请求参数时,若原始字符串值与目标字段类型不一致,便会委托该服务执行类型转换。例如,将字符串 "2023-10-01" 转为 java.time.LocalDate 类型。
@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            setValue(LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        }
    });
}
上述代码通过 @InitBinder 注册自定义编辑器,扩展了 WebDataBinder 的类型转换能力。其本质是将特定格式的字符串转化为 Java 对象,供后续业务逻辑使用。
  • WebDataBinder 控制绑定过程:字段匹配、错误收集
  • 类型转换器专注类型映射:String → Object 的语义解析
  • ConversionService 作为桥梁,统一调度各类转换器

2.3 日期类型绑定的默认行为及其局限性

在大多数ORM框架中,日期类型字段(如 DATE、DATETIME)通常会自动映射为语言层面的日期对象(如Go中的 time.Time)。这种默认绑定简化了基础操作,但也带来了一些隐式限制。
默认行为示例

type User struct {
    ID        uint
    CreatedAt time.Time // 自动绑定数据库DATETIME
}
上述结构体在查询时会自动将数据库中的 '2025-04-05 10:00:00' 解析为 time.Time 实例。
主要局限性
  • 时区处理不明确:默认使用本地时区或UTC,易引发时间偏移问题
  • 精度丢失:部分数据库支持微秒,但某些驱动仅解析到秒级
  • 格式耦合:依赖数据库返回的字符串格式,变更格式可能导致解析失败
这些限制要求开发者显式配置绑定逻辑以确保一致性。

2.4 自定义属性编辑器PropertyEditor的应用实践

在Spring框架中,PropertyEditor用于实现字符串与其他类型之间的转换。通过实现`java.beans.PropertyEditorSupport`,可定制化属性绑定逻辑。
自定义编辑器实现
public class UserEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        String[] fields = text.split(",");
        User user = new User(fields[0], Integer.parseInt(fields[1]));
        setValue(user);
    }
}
上述代码将形如"John,25"的字符串解析为User对象。`setAsText`方法负责解析输入,`setValue`存储结果实例。
注册与使用
在Spring容器中需注册编辑器:
  • 通过CustomEditorConfigurer全局注册
  • 或在initBinder方法中局部注册
注册后,Spring在数据绑定时自动调用对应编辑器,实现类型转换透明化。

2.5 使用Converter替代传统编辑器的现代化方案

在现代Web开发中,Converter正逐步取代传统的表单编辑器,提供更灵活、类型安全的数据转换机制。相比老旧的PropertyEditor,Converter接口设计简洁,易于扩展。
核心优势
  • 类型安全:支持泛型,编译期即可检查类型匹配
  • 可复用性:独立于HTTP请求上下文,适用于多种场景
  • 链式处理:可通过ConverterFactory统一管理多个转换器
典型代码实现
public class StringToDateTimeConverter implements Converter<String, LocalDateTime> {
    private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    @Override
    public LocalDateTime convert(String source) {
        return LocalDateTime.parse(source.trim(), formatter);
    }
}
上述代码定义了一个字符串转LocalDateTime的转换器。通过实现Spring的Converter接口,convert方法接收源字符串并解析为日期时间对象,空白字符被自动剔除,提升容错能力。
注册方式
配置类中通过ConversionService注册:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new StringToDateTimeConverter());
    }
}

第三章:实现自定义日期格式绑定

3.1 基于@InitBinder注册Date类型编辑器

在Spring MVC中,处理前端传递的日期字符串绑定到Java `Date`类型时,默认无法直接完成转换。此时可通过`@InitBinder`注解注册自定义的属性编辑器,实现日期格式的自动解析。
使用@InitBinder注册DateEditor
@ControllerAdvice
public class GlobalBinder {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, 
            new CustomDateEditor(dateFormat, false));
    }
}
上述代码通过`@ControllerAdvice`全局注册数据绑定规则。`@InitBinder`方法将`SimpleDateFormat`封装为`CustomDateEditor`,并注册到`Date.class`类型的属性上。参数`false`表示不允许空值,若传入为空则抛出绑定异常。
支持的日期格式示例
输入字符串是否有效说明
2025-04-05是符合 yyyy-MM-dd 格式
2025/04/05否分隔符不匹配

3.2 支持多种日期格式的动态解析策略

在处理跨系统数据交互时,日期格式的多样性常导致解析失败。为提升系统的兼容性,需采用动态解析策略,自动识别并转换不同格式的日期字符串。
常见日期格式枚举
系统可能接收到以下典型格式:
  • 2024-01-01(ISO 8601)
  • 01/01/2024(美式)
  • 01-Jan-2024(缩写月份)
  • 2024年1月1日(中文本地化)
基于优先级的解析流程
func ParseDate(input string) (time.Time, error) {
    formats := []string{
        "2006-01-02",
        "01/02/2006",
        "02-Jan-2006",
        "2006年1月2日",
    }
    for _, f := range formats {
        if t, err := time.Parse(f, input); err == nil {
            return t, nil
        }
    }
    return time.Time{}, fmt.Errorf("unsupported date format")
}
该函数按预定义顺序尝试解析,一旦成功即返回。这种“试探+回退”机制确保高容错性,同时可通过配置文件动态更新格式列表,增强灵活性。

3.3 处理时区与Locale相关的日期输入

在国际化应用中,正确处理用户本地的日期与时间至关重要。不同地区使用不同的日历系统、时间格式与时区规则,需借助标准化机制确保数据一致性。
JavaScript 中的国际化解析
现代浏览器提供 Intl.DateTimeFormat API,支持按 Locale 解析和格式化日期。

const options = { 
  year: 'numeric', 
  month: 'long', 
  day: '2-digit', 
  timeZone: 'Asia/Shanghai' 
};
const formatter = new Intl.DateTimeFormat('zh-CN', options);
console.log(formatter.format(new Date())); // 输出:2025年4月5日
上述代码根据中文用户习惯输出长格式月份与两位数日期,并强制使用东八区时间,避免客户端时区偏差导致显示错误。
常见时区映射表
Locale时区示例格式
en-USAmerica/New_YorkApril 5, 2025
zh-CNAsia/Shanghai2025年4月5日
ja-JPAsia/Tokyo2025年4月5日

第四章:最佳实践与常见问题规避

4.1 全局配置@InitBinder提升代码复用性

在Spring MVC中,`@InitBinder`可用于控制器内部的数据绑定定制,但若多个控制器存在共通的绑定逻辑(如日期格式化、字段修剪),则可通过全局配置实现复用。
全局InitBinder配置方式
通过实现`WebDataBinderFactory`并结合`@ControllerAdvice`,可将`@InitBinder`方法提升至全局作用域:
@ControllerAdvice
public class GlobalBindingInitializer {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 注册日期类型格式化
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
        
        // 启用字段自动修剪
        binder.setAutoGrowNestedPaths(true);
    }
}
上述代码注册了全局的日期解析规则,并开启嵌套路径自动扩展。所有控制器在接收请求参数时均自动应用该规则,避免重复编码。
  • 减少各Controller中的重复初始化逻辑
  • 统一数据预处理标准,增强一致性
  • 支持自定义类型编辑器,扩展性强

4.2 结合@Configuration和@ControllerAdvice统一管理绑定逻辑

在Spring Boot应用中,通过组合使用`@Configuration`与`@ControllerAdvice`,可实现全局数据绑定逻辑的集中管理。该模式将配置类与切面式异常/绑定处理结合,提升代码复用性与维护效率。
配置类定义共享规则
使用`@Configuration`类注册通用数据绑定组件:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new StringToBooleanConverter());
    }
}
上述代码注册自定义类型转换器,确保所有控制器自动应用该规则。
全局增强控制器行为
`@ControllerAdvice`织入跨控制器的绑定逻辑:
@ControllerAdvice
public class BindingAdvice {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setDisallowedFields("id"); // 防止ID绑定
    }
}
initBinder方法拦截所有表单绑定过程,屏蔽敏感字段,增强安全性。

4.3 防止线程安全问题:不可变格式化实例的设计

在多线程环境下,共享可变状态是导致线程安全问题的主要根源。通过设计不可变的格式化实例,可以从根本上避免竞态条件。
不可变对象的优势
不可变对象一旦创建,其内部状态不可更改,天然具备线程安全性,无需额外同步开销。
public final class DateFormatter {
    private final String pattern;

    public DateFormatter(String pattern) {
        this.pattern = pattern;
    }

    public String format(LocalDateTime time) {
        return DateTimeFormatter.ofPattern(pattern).format(time);
    }
}
上述代码中,DateFormatter 类为不可变类:字段 pattern 被声明为 final,且不提供任何修改方法。每次使用都创建独立实例,确保并发调用不会互相干扰。
使用建议
  • 优先复用不可变实例,如将常用格式器缓存为常量
  • 避免在高并发场景下频繁创建临时对象

4.4 日志记录与异常友好提示增强可维护性

在现代应用开发中,良好的日志记录和清晰的异常提示是保障系统可维护性的关键。通过结构化日志输出,开发者可以快速定位问题根源。
使用结构化日志提升排查效率
采用 JSON 格式记录日志,便于集中采集与分析:

log.JSON("error", map[string]interface{}{
    "err":     err.Error(),
    "user_id": userID,
    "action":  "update_profile",
})
该方式将错误、用户上下文与操作行为统一记录,显著提升调试效率。
异常信息友好化处理
通过封装错误类型,向调用方返回可读性强的提示信息:
  • 区分系统错误与业务错误
  • 对敏感错误脱敏处理
  • 附带唯一请求ID用于链路追踪

第五章:从@InitBinder到现代Spring数据绑定的演进思考

传统数据绑定的起点
在早期Spring MVC中,@InitBinder 是定制数据绑定行为的核心机制。开发者通过在控制器中定义该注解方法,注册自定义的PropertyEditor或Converter,以处理请求参数到Java对象的转换。

@Controller
public class UserController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    }
}
向类型安全的转变
随着Java 8引入java.time,以及Spring对JSR-310的支持增强,基于@InitBinder的手动注册逐渐被全局配置取代。通过实现WebMvcConfigurer并重写addFormatters,可统一注册时间格式化器。
  • 避免在每个控制器重复编写@InitBinder
  • 提升代码复用性与维护性
  • 支持跨模块共享类型转换逻辑
现代响应式编程中的绑定演进
在Spring WebFlux中,传统的@InitBinder完全失效,取而代之的是基于函数式编程模型的ServerRequest和不可变的数据结构。数据绑定通过BodyExtractors完成,结合Validator实现校验。
特性传统@InitBinder现代WebFlux
绑定粒度控制器级别全局配置 + 函数式提取
线程模型同步阻塞异步非阻塞
扩展方式注册Editor实现Converter/Formatter
@InitBinder注解 @InitBinder注解的使用 阅读详情

相关推荐

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1805

springMVC之@InitBinder的用法

@InitBinder从字面意思可以看出这个的作用是给Binder做初始化的`@InitBinder主要用在@Controller中标注于方法上(@RestController也算),表示初始化当前控制器的数据绑定器(或者属性绑定器),只对当前的Controller有效。@InitBinder标注的方法必须有一个参数WebDataBinder。所谓的属性编辑器可以理解就是帮助我们完成`参数绑定`,然后是在请求到达controller要执行方法前执行!

怪咖@的博客 1万+

iTunes登录协议全解析:从抓包到签名验证(含HTTPDebugger避坑指南)

本文深入解析了iTunes登录协议的核心流程,包括sign-sap-setup-cert和sign-sap-setup-buffer等关键请求,并提供了使用HTTPDebugger等工具进行抓包分析时绕过反调试检测的实战技巧与避坑指南。文章详细拆解了PLIST编解码、请求签名验证机制及密码加密逻辑,为网络安全研究和协议逆向提供了完整的技术路径。

weixin_29224309的博客 331

详细分析@InitBinder注解的使用和原理

由@InitBinder注解修饰的方法用于初始化WebDataBinder对象,能够实现:从request获取到handler方法中由@RequestParam注解或@PathVariable注解修饰的参数后,假如获取到的参数类型与handler方法上的参数类型不匹配,此时可以使用初始化好的WebDataBinder对获取到的参数进行类型处理。

z1ztai的博客 2918

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

Visual Studio 2015 插件开发 从入门到放弃(一)

必需知识:C#和Visual Studio (1)安装 Visual Studio 2015 的时候选择 Visual Studio 扩展性工具(Visual Studio Extensibility Tools)。对于已经安装好 Visual Studio 2015 的小伙伴,可以找VS2015的安装包,或者在程序与功能中找VS2015双击,在VS2015界面中选择 修改,再选择

AncientPeople的博客 2万+

SpringBoot @InitBinder注解绑定请求参数

⏹SpringBoot @InitBinder注解绑定请求参数

菜鸟记录 1952

matinal:SAP ABAP 关于sftp的发送接收源代码

如果您将目标系统的凭据存储在该 RFC 连接中,您可以安排程序并将其作为后台作业运行:凭据将从 SM59 配置中获取,并且在文件传输期间不会提示您输入它们。这尤其适用于安全问题:您有责任为您的编码添加安全功能,并相应地配置您的系统(例如,保护您的系统免受病毒侵害)。注意:在创建自己的程序时,请特别注意示例代码中以“@CUSTOMER”开头的注释,因为您需要实现自己的逻辑。本说明为您提供示例编码以支持您创建自己的程序。在 STRUST 事务中,您维护了一个 PSE 并导入了您要发送的文件的最终收件人的证书。

matinal 當冬夜漸暖 。公众号:matinal 1333

【Spring MVC @InitBinder 核心技巧】:彻底掌握日期格式化的5种高效方案

掌握Spring MVC @InitBinder的日期格式化技巧,解决表单日期绑定难题。涵盖自定义格式、全局配置、注解结合等5种高效方案,适用于REST接口和传统Web项目,提升开发效率与用户体验,值得收藏。

VarFlow的博客 919

【Linux】实际项目应该如何完成?--安防监控系统项目的总结

到目前为止我也做个5、6个嵌入式项目,但以往都是从零开始自己做,也就是毫无计划,想到那里做那里,有想法就会去实现,就这样导致我碰到了很多坑,也消耗了我许多时间,当然,不是说这样不好,因为在其中我也得到了一个很好的锻炼与练习,但是这不适用于在工作中去这样做。...

修成真的博客 6725

二手分析仪器改造实战:如何用PMT搭建荧光检测电路(附完整电路图)

本文详细介绍了如何利用二手分析仪器中的光电倍增管(PMT)核心部件,进行荧光检测电路的实战改造。内容涵盖从PMT工作原理理解、高压供电电路设计、低噪声前置放大(跨阻放大器)到信号调理的完整流程,并提供了关键电路图与调试排错指南,旨在帮助电子爱好者与工程师低成本构建稳定、高灵敏度的专业检测系统。

weixin_29234239的博客 440

【Spring MVC数据绑定终极指南】:深入掌握@InitBinder的5种高级用法

掌握Spring MVC的@InitBinder用法,精准解决数据绑定与类型转换难题。涵盖日期格式化、自定义编辑器、表单对象绑定等5大应用场景,提升控制器健壮性与灵活性。实战示例解析,值得收藏。

FastCompile的博客 818

从零打造高速 SerDes 系统:一步步教你生成 IBIS-AMI 模型!(含Simulink实操)

一个完整的 SerDes 系统,不止是电路设计,更是 SI 仿真、IBIS建模、系统验证三位一体的过程。用 MATLAB 的 SerDes Designer + Simulink 组合拳,不仅可以快速完成设计,还能无缝衔接工业标准流程,非常适合个人学习 & 企业验证。如果你还没用过,建议马上动手试一遍,毕竟:“光说不练假把式,跑出眼图才是王道!”🔥。

weixin_43199439的博客 1143

@InitBinder的使用

@InitBinder这个注解是Spring 2.5后推出来,用于数据绑定、设置数据转换器等,字面意思是“初始化绑定器”。 在Spring MVC的web项目中,相信小伙伴们经常会遇到一些前端给后端传值比较棘手的问题:比如最经典的问题: Date类型(或者LocalDate类型)前端如何传?后端可以用Date类型接收吗? 字符串类型,如何保证前段传入的值两端没有空格呢?(99.99%的情况下多余的...

P19777的博客 2612

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring MVC 中的 @InitBinder 使用与实践

首先,我们定义一个User@Pattern(regexp = "\\S+", message = "密码中不允许包含空格")@NotEmpty@Email@NotNull// 出生日期字段// 省略 getter 和 setter 方法是 Spring MVC 中一个非常强大的工具,它允许我们自定义数据绑定逻辑,从而更好地处理复杂的数据类型和格式化需求。通过本文的用户注册示例,我们展示了如何使用注册自定义的属性编辑器,实现字符串到日期的转换。

m0_74337424的博客 649

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring MVC 自学杂记(二) -- 数据绑定之日期转换

Spring MVC数据绑定之日期转换在Spring MVC中 具备强大的数据绑定,常用的数据类型都是可以直接在后台转换的常见的数据绑定注解有:1.@RequestParam,绑定单个请求数据,可以是URL中的数据,表单提交的数据或上传的文件; 2.@PathVariable,绑定URL模板变量值; 3.@CookieValue,绑定Cookie数据; 4.@RequestHeader,

天涯共明月的博客 4098

Java 里面 @InitBinder注解的使用原理

Java

一天不写代码难受的博客 1139

从原理层面掌握@InitBinder的使用【享学Spring MVC】

每篇一句 大魔王张怡宁:女儿,这堆金牌你拿去玩吧,但我的银牌不能给你玩。你要想玩银牌就去找你王浩叔叔吧,他那银牌多 前言 为了讲述好Spring MVC最为复杂的数据绑定这块,我前面可谓是做足了功课,对此部分知识此处给小伙伴留一个学习入口,有兴趣可以点开看看:聊聊Spring中的数据绑定 --- WebDataBinder、ServletRequestDataBinder、WebBi...

weixin_30800807的博客 374

spring mvc InitBinder 表单传输对应自定义JavaBean

表单传输参数为自定义java类 当表单传输参数为日期或者为javabean时,在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能。 @Controller public class WelcomeController { @InitBinder ...

weixin_43448751的博客 259

SpringMVC-8 数据绑定与类型转换

目录儿数据绑定数据类型转换 数据绑定 在执行程序时SpringMVC会根据客户端发送的请求参数的不同,将请求消息中的信息以特定的方式转换并绑定到Controller的方法参数中。这种前后端进行连接的过程就是数据绑定。 SpringMVC进行数据绑定的运行机制如下图所示。 数据绑定信息处理过程的步骤如下: SpringMVC框架将ServletRequest对象传递给DataBinder。 将处理方法入参对象实例传递给DataBinder。 DataBinder调用装配在SpringMVC上下文中的Con

qq_30082553的博客 736

Spring学习笔记_46——@InitBinder

是 Spring MVC 框架中的一个注解,用于在控制器(Controller)中初始化 WebDataBinder 对象。WebDataBinder 是 Spring MVC 用来绑定请求参数到 JavaBean 对象(即模型对象)的工具,同时也支持数据校验和格式化等功能。通过注解的方法,开发者可以在请求处理之前对 WebDataBinder 进行自定义配置,比如添加自定义的编辑器(PropertyEditor)或转换器(Converter),或者注册自定义的验证器(Validator)。

LuckyLay的博客 788

Json格式日期转换问题

一.@JsonFormat()注解1.需在对应日期属性上加上@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = “GMT+08”); 2.需要在每个日期属性上都得加上该标签,比较繁琐二.@JsonSerializer()和@JsonDeserializer()使用 1. 自定义实现org.codehaus.jackson.map.JsonS

xiaohoulove_的博客 3005

@InitBinder自定义前端数据格式

把前端传入字符串日期解析成Date /** * 把前端传入字符串日期解析成Date * @author 创建人: 韩威 * @date 创建日期: 2019年9月5日 */ @InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFo...

Don't forget your intentions 311

springboot处理参数再转发请求_SpringBoot教程30整合SpringMVC之WebDataBinder处理请求参数绑定(二)...

SpringBoot2.x系列教程30--整合SpringMVC之WebDataBinder处理请求参数的绑定(二)作者:一一哥在上一章节,SpringBoot2.x系列教程29--整合SpringMVC之@InitBinder处理请求参数的绑定(上)的内容中,我给大家讲解了@InitBinder的原理及使用教程,本章节我继续讲解SpringMVC中的参数传递及数据绑定。本章节主要是讲解WebDa...

weixin_39787826的博客 96

springMVC 中日期问题相关

spring mvc 中的类型转换问题若是前台传来controller的是String类型,可是需要的是Date类型,会产生如下错误:Field error in object 'perform' on field 'startTime': rejected value [2018-06-29 16:08:00]; codes [typeMismatch.perform.startTime,typ...

Ysmbdjglww的博客 562
上一篇: no-rollback-for配置无效?,彻底搞懂Spring Boot事务异常回滚规则
下一篇: (Java 18 SIMD编程突破):FloatVector加法实现原理与性能调优全曝光
BytePerch
博客等级 码龄1年 164粉丝 1971原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值