出处:http://www.cnblogs.com/crazy-fox/archive/2012/02/18/2357699.html

ean 名为User,则在相同的包中存在UserEditor类可实现customer propertyEditor的自动注册。

2:利用@InitBinder来注册customer propertyEditor

这个在之前的笔记中已经介绍过了,即在controller类中增加一个使用@InitBinder标注的方法,在其中注册customer Editor

    @InitBinderinitBinder(WebDataBinder binder) {SimpleDateFormat dateFormat =  SimpleDateFormat("yyyy-MM-dd");dateFormat.setLenient();binder.registerCustomEditor(Date.,  CustomDateEditor(dateFormat, ));}

3:继承 WebBindingInitializer 接口来实现全局注册 使用@InitBinder只能对特定的controller类生效,为注册一个全局的customer Editor,可以实现接口WebBindingInitializer 。

  CustomerBinding  WebBindingInitializer {@OverrideinitBinder(WebDataBinder binder, WebRequest request) {SimpleDateFormat dateFormat =  SimpleDateFormat("yyyy-MM-dd");dateFormat.setLenient();binder.registerCustomEditor(Date.,  CustomDateEditor(dateFormat, ));}

并修改 servlet context xml配置文件

<bean        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="webBindingInitializer"><bean                class="net.zhepu.web.customerBinding.CustomerBinding" /></property></bean>

但这样一来就无法使用mvc:annotation-driven  了。
使用conversion-service来注册自定义的converter DataBinder实现了PropertyEditorRegistry, TypeConverter这两个interface,而在spring mvc实际处理时,返回值都是return binder.convertIfNecessary(见HandlerMethodInvoker中的具体处理逻辑)。因此可以使用customer conversionService来实现自定义的类型转换。

        <bean id="conversionService"        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">

<property name="converters"><list><bean class="net.zhepu.web.customerBinding.CustomerConverter" /></list></property>

</bean>

需要修改spring service context xml配置文件中的annotation-driven,增加属性conversion-service指向新增的conversionService bean。

    <mvc:annotation-driven validator="validator"        conversion-service="conversionService" />

实际自定义的converter如下。

   CustomerConverter  Converter<String, Date> {@OverrideDate convert(String source) {SimpleDateFormat dateFormat =  SimpleDateFormat("yyyy-MM-dd");dateFormat.setLenient();{dateFormat.parse(source);}  (ParseException e) {e.printStackTrace();}        ;}

对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 例如,之前提到的json格式的输入,在将json格式的输入转换为具体的model的过程中,spring mvc首先找出request header中的contenttype,再遍历当前所注册的所有的HttpMessageConverter子类, 根据子类中的canRead()方法来决定调用哪个具体的子类来实现对requestBody中的数据的解析。如果当前所注册的httpMessageConverter中都无法解析对应contexttype类型,则抛出HttpMediaTypeNotSupportedException (http 415错误)。 那么需要如何注册自定义的messageConverter呢,很不幸,在spring 3.0.5中如果使用annotation-driven的配置方式的话,无法实现自定义的messageConverter的配置,必须老老实实的自己定义AnnotationMethodHandlerAdapter的bean定义,再设置其messageConverters以注册自定义的messageConverter。 在3.1版本中,将增加annotation-driven对自定义的messageConverter的支持 (SPR-7504),具体格式如下

<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"/><bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/><bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/></mvc:message-converters></mvc:annotation-driven>

转载于:https://blog.51cto.com/quanju/1543600

Spring MVC 解决日期类型动态绑定问题相关推荐

  1. 详解Spring MVC请求参数类型,解决中文乱码问题,自定义类型转换器,Spring MVC相关注解

    #SpringMVC SpringMVC请求 简单类型 简单类型包括:基本类型,基本类型的包装类型,字符串 编写Controller @RequestMapping("/param" ...

  2. Spring MVC__自定义日期类型转换器

    WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们.说真的,以前真没这样做过,之前都是一口气查 ...

  3. Spring MVC Converter(类型转换器)详解

    Spring MVC 框架的 Converter<S,T> 是一个可以将一种数据类型转换成另一种数据类型的接口,这里 S 表示源类型,T 表示目标类型.开发者在实际应用中使用框架内置的类型 ...

  4. spring mvc 解决csrf跨站请求攻击

    http://www.dewen.net.cn/q/935/spring+mvc+%E8%A7%A3%E5%86%B3csrf%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82% ...

  5. spring mvc @ModelAttribute 基本类型 自定义对象解析流程

    一.如果方法中参数为基本类型,则通过POST的表单或者GET参数会使用 RequestParamMethodArgumentResolver作为参数解析器进行转换.如果参数名和客户端传入的参数名不一样 ...

  6. springmvc使用spring自带日期类型验证

    控制器 @Controller public class MyController {// 处理器方法@RequestMapping(value = "/first.do")pub ...

  7. spring mvc 解决后台传递值乱码问题

    在Web-xml 配置添加过滤器 <!-- 配置过滤器 解决乱码问题 --> <filter> <filter-name>CharacterEncodingFilt ...

  8. Spring MVC中日期转换的错误

    今天给我的pojo类加一个时间属性后,测试总是报格式转换错误. 代码如下: @DateTimeFormat(pattern = "yyyy-MM-dd") private Date ...

  9. Spring MVC 生成文件类型响应

    图片控制器代码如下: @Controller @RequestMapping("/") public class WebController {@RequestMapping(me ...

最新文章

  1. Python Scrapy爬虫框架实战应用
  2. 中国数学界,无论怎样感谢哈代都不为过
  3. 注释符、快捷键、变量及其命名规则
  4. 语音识别发展必牺牲隐私?最大问题或因不符用户预期,需增透明性
  5. rebar Erlang构建工具(转)
  6. windows平台oracle无法调度,windows 2003+Legato networker+oracle 9i (框架)
  7. 如何使用腾讯云提供的虚拟主机
  8. Python小练习1:.txt文件常用读写操作
  9. ajax为什么返回html标签,AJAX与特定值后返回的HTML标签
  10. python爬虫小工具——editplus
  11. 米斯特白帽培训讲义 工具篇 Safe3 WVS
  12. 嵌入式Linux入门2:工具掌握(Windows篇)
  13. python创建文件对象的函数_Python 文件对象常用内建方法
  14. anaconda python命令_怎么用anaconda命令行?
  15. 高清3D人体解剖图谱
  16. HTML基础学习(菜鸟教程和W3school参考手册)
  17. undefined == null的正确解释
  18. GGSN与SGSN简介
  19. android 平板怎么截图,平板电脑怎么截图 方法有哪些呢
  20. 计算机科学与探索 影响因子,《计算机科学与探索》国家级计算机期刊投稿论文发表...

热门文章

  1. 【转】symbian操作系统 入门篇
  2. 使用openssl生成rsa公钥和私钥
  3. 数据不平衡的解决办法
  4. python-mysql的安装和基本操作
  5. VMware将世界领先的云访问安全代理合作伙伴纳入移动安全联盟
  6. 【项目管理】Project使用
  7. 对《Clojure in Action》第二版的书评与作者问答
  8. EXPORT_SYMBOL的作用是什么
  9. MongoDB修改删除数据
  10. configure,pkg-config和PKG_CONFIG_PATH