`
朱秋旭
  • 浏览: 231057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

说说Spring中的WebDataBinder

阅读更多

还是老规矩,开门见山。 我们开发的时候经常会从html,jsp中将参数传到后台,可是经常会遇到的一种情况就是传过来的数据到后台要组装成一种对象的格式,最常见的就是enum类型了。这时候spring提供的@initBinder这个annotation 就发挥了很大的作用。



 

众所周知spring可以自动将request中的数据对应到对象的每个property,会自动的bind 一些simple data (Strings, int, float, etc.) 对应到 你所要求的Object中,可是如果面对复杂的对象,那就需要借助于PropertyEditor 来帮助你完成复杂对象的对应关系,这个借口提供了两个方法,将一个property 转成string getAsText(), 另外一个方法是将string类型的值转成property对应的类型。使用起来也很简单,来个例子:

 

@InitBinder
public void bindingPreparation(WebDataBinder binder) {
  DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY");
  CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true);
  binder.registerCustomEditor(Date.class, orderDateEditor);
}

 

这样同样面临一个问题,如果我有两个变量,变量名不一样,处理的规则也不一样,但是他们都是Date.class 类型, 这可怎么破。比如:



 

贴心的spring,提供了一种重载的方法。 for example:

 

@InitBinder
public void bindingPreparation(WebDataBinder binder) {
  DateFormat dateFormat1 = new SimpleDateFormat("d-MM-yyyy");
  CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat1, true);
  DateFormat dateFormat2 = new SimpleDateFormat("MMM d, YYYY");
  CustomDateEditor shipDateEditor = new CustomDateEditor(dateFormat2, true);
  binder.registerCustomEditor(Date.class, "orderDate", orderDateEditor);
  binder.registerCustomEditor(Date.class, "shipDate", shipDateEditor);
}

 

 

其实只要为每个变量绑定一个不同的Editor就可以了,对于不同的变量进行不同的处理。这样就能够方便的完成request 和 property 之间的binder了。

 

以上的两个例子仅供抛砖引玉的作用,更多的spring内容还请大家自己不断探索,个人非常喜欢spring,也会不断发表新的spring文章。

 

 
  • 大小: 15.5 KB
  • 大小: 24.3 KB
3
0
分享到:
评论
4 楼 semmy 2014-09-28  
这是旧版本的Spring MVC这样处理,新的SpringMVC应该是用converter接口
3 楼 nuoyan139 2014-09-28  
                                 
2 楼 朱秋旭 2014-09-28  
white_crucifix 写道
前面说的enum后面说的date??

呵呵,是我没有说清楚,前面是我在搞enum 的时候遇到的,后面说date是因为我觉得这个例子很好,一般enum很少同时出现两个吧
1 楼 white_crucifix 2014-09-28  
前面说的enum后面说的date??

相关推荐

    Spring中WebDataBinder使用详解

    在上面的示例代码中,我们使用@InitBinder注解来配置Web数据绑定,并将自定义的验证类注册到WebDataBinder中。 registerCustomEditor()方法 在使用WebDataBinder时,我们可以使用registerCustomEditor()方法来注册...

    spring自己说说

    标题“spring自己说说”可能是指一篇关于Spring框架的个人见解或经验分享的文章。由于描述为空,我们只能根据标题和标签来推测文章可能涉及的内容。标签包括“源码”和“工具”,这提示我们这篇文章可能会深入到...

    spring 源码中文注释

    Spring框架是Java开发中最广泛应用的轻量级框架之一,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。这份"spring 源码...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    spring源码注释中文

    Spring 框架是 Java 开发中的一个核心组件,它为构建可维护、模块化和松耦合的应用程序提供了一种强大的方式。Spring 源码注释中文版的提供,使得开发者能够更加深入地理解 Spring 的工作原理,无需经过复杂的编译...

    Spring-5.0.0-官方中文文档

    Spring框架是Java开发中不可或缺的重要组成部分,特别是在企业级应用领域,它的影响力无处不在。Spring 5.0.0作为其重要版本,引入了诸多新特性和改进,旨在提升开发效率,增强应用性能,以及更好地适应现代软件开发...

    spring 5 中文注释源码.rar

    新版 spring 5 中文注释源码,关键源码位置都有中文注释,方便阅读源码 spring源码解读 Spring框架是由于软件开发的复杂性而创建的...从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

    spring6pdf详细讲解

    在 Spring 中,手写 Spring 框架是一种方式,使得开发者可以深入了解 Spring 框架的内部机理。 Spring 框架提供了多种方式来开发企业级应用程序,使得开发者可以快速和方便地开发和维护应用程序。

    Spring中文开发手册下载 CHM

    Spring框架是Java开发中的核心组件,它为构建可测试、模块化、松耦合的Java应用程序提供了全面的基础设施。这份"Spring中文开发手册"旨在帮助中国开发者深入理解并有效使用Spring框架,提升开发效率和代码质量。CHM...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效...通过学习和实践这个示例,你不仅可以掌握如何在Spring Boot中使用Spring Batch,还能了解批处理的最佳实践,这对于处理大数据量的应用场景非常有价值。

    Spring5中文文档

    在表达式语言(SpEL)章节中,介绍了Spring表达式语言的基础知识和功能特性,以及如何在Bean定义中使用SpEL表达式进行求值和语言参考。 测试章节提供了单元测试和集成测试的示例和最佳实践,包括JDBC测试和使用...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring Integration + Spring WS 整合

    在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web 服务解决方案。 Spring Integration ...

    spring-security 官方文档 中文版

    本文档所指的版本为 Spring Security 3.0.1,这是一个 bug fix 版本,主要针对 3.0 版本中存在的问题进行修复,确保开发者能够获取更稳定可靠的 Spring Security 库。 **1.4 获取 Spring Security** - **项目模块*...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...

    Javaspring中的spring-core-5.2.9.RELEASE.jar

    Javaspring中的spring-core-5.2.9.RELEASE.jar

    Spring中文文档.pdf

    Spring系列项目中还包括Spring Boot、Spring Security、Spring Data、Spring Cloud和Spring Batch等,这些都是基于Spring Framework构建的,每个项目都有自己的源代码存储库和文档。开发者在使用时应根据实际需要...

    Spring 实战 (中文第4版) PDF + source code

    本书全面覆盖了Spring框架的核心概念、关键特性以及在实际开发中的应用,适合Java开发者和对Spring感兴趣的人员阅读。作者Cary Millsap和Craig Walls凭借丰富的经验,将理论与实践相结合,提供了大量实用示例,帮助...

    Spring Security in Action

    在 Spring Security 中,身份验证是通过 AuthenticationManager 和 AuthenticationProvider 实现的。AuthenticationManager 负责管理身份验证过程,而 AuthenticationProvider 负责执行具体的身份验证逻辑。 在 ...

    spring2.0升级到spring3.0.5的开发包

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...

Global site tag (gtag.js) - Google Analytics