说说Spring中的WebDataBinder

简介: 国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为中国PE第一股,市值超1000亿元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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



 

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

 

Java代码   收藏代码
  1. @InitBinder  
  2. public void bindingPreparation(WebDataBinder binder) {  
  3.   DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY");  
  4.   CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true);  
  5.   binder.registerCustomEditor(Date.class, orderDateEditor);  
  6. }  

 

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



 

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

 

Java代码   收藏代码
  1. @InitBinder  
  2. public void bindingPreparation(WebDataBinder binder) {  
  3.   DateFormat dateFormat1 = new SimpleDateFormat("d-MM-yyyy");  
  4.   CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat1, true);  
  5.   DateFormat dateFormat2 = new SimpleDateFormat("MMM d, YYYY");  
  6.   CustomDateEditor shipDateEditor = new CustomDateEditor(dateFormat2, true);  
  7.   binder.registerCustomEditor(Date.class, "orderDate", orderDateEditor);  
  8.   binder.registerCustomEditor(Date.class, "shipDate", shipDateEditor);  
  9. }  

 

 

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

 

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

 

目录
相关文章
|
Java Spring 容器
Spring(1)
Spring(1)
43 0
|
Java Spring 容器
spring之HttpInvoker
  一、HttpInvoker是常用的Java同构系统之间方法调用实现方案,是众多Spring项目中的一个子项目。顾名思义,它通过HTTP通信即可实现两个Java系统之间的远程方法调用,使得系统之间的通信如同调用本地方法一般。
2485 0
|
4月前
|
Java 开发者 Spring
Spring之AutowiredAnnotationBeanPostProcessor
`AutowiredAnnotationBeanPostProcessor`是Spring自动装配机制的核心组成部分,为开发者提供了强大的依赖注入功能。通过识别 `@Autowired`及其他相关注解,它可以减少设置依赖的样板代码,允许快速和容易地集成不同的Spring组件。由于其在Spring框架中的关键作用,掌握其原理和用法对于深入理解和正确使用Spring框架至关重要。通过其提供的默认功能以及定制化扩展能力,`AutowiredAnnotationBeanPostProcessor`能够满足各种复杂场景下的依赖注入需求。
66 0
|
6月前
|
SQL Java 数据库
|
7月前
|
存储 Java 对象存储
关于spring,看完你就理解了
关于spring,看完你就理解了
71 3
|
XML 前端开发 Java
|
7月前
|
存储 设计模式 Java
【Spring】——Spring简单 读和取(二)
【Spring】——Spring简单 读和取
67 0
【Spring】——Spring简单 读和取(二)
|
7月前
|
前端开发 Java 开发者
【Spring】 ——初识Spring
【Spring】 ——初识Spring
59 0
|
7月前
|
Java Spring
Spring中那些BeanFactoryPostProcessors详解(二)
Spring中那些BeanFactoryPostProcessors详解(二)
46 0
|
Java 应用服务中间件 程序员
spring
spring
78 0