在搞 日期转换的时候, 希望 可以 全局的,灵活的转换日期。 可是 不是出错, 就是 不方便,麻烦。
1, 第一种方式, 参考地址: https://my.oschina.net/kings0/blog/725415 这种方式是 spring3 的,不够灵活,而且性能不嘉,有缺点 2, 第二种方式: 参考地址: http://www.cnblogs.com/ssslinppp/p/4600043.html 即在 对应的 参数 bean 的 属性上面, 加上 注解, 想要 什么格式都可以 。 可是感觉 改动 也 挺麻烦的
3, 第三种就是 spirng4 的 mvc 出来的, 全局的,而且 可以 随便使用的, 很灵活,可以自定义很多 转格式的, 调用也 很方便 参考地址:https://my.oschina.net/elim1/blog/811653 以及参考地址: http://blog.csdn.net/u012373815/article/details/50252073
可是 我在 使用 第三种方式的时候,老是出来问题。。。、
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 4 errors
Field error in object 'hrEffPplanCyclePo' on field 'objReportEtime': rejected value [2017-01-23]; codes [typeMismatch.hrEffPplanCyclePo.objReportEtime,typeMismatch.objReportEtime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [hrEffPplanCyclePo.objReportEtime,objReportEtime]; arguments []; default message [objReportEtime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'objReportEtime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @com.skg.base.db.annotion.IField java.util.Date for value '2017-01-23'; nested exception is java.lang.IllegalArgumentException]
Field error in object 'hrEffPplanCyclePo' on field 'objReportStime': rejected value [2017-01-05]; codes [typeMismatch.hrEffPplanCyclePo.objReportStime,typeMismatch.objReportStime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [hrEffPplanCyclePo.objReportStime,objReportStime]; arguments []; default message [objReportStime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'objReportStime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @com.skg.base.db.annotion.IField java.util.Date for value '2017-01-05'; nested exception is java.lang.IllegalArgumentException]
Field error in object 'hrEffPplanCyclePo' on field 'paEtime': rejected value [2017-01-31]; codes [typeMismatch.hrEffPplanCyclePo.paEtime,typeMismatch.paEtime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [hrEffPplanCyclePo.paEtime,paEtime]; arguments []; default message [paEtime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'paEtime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @com.skg.base.db.annotion.IField java.util.Date for value '2017-01-31'; nested exception is java.lang.IllegalArgumentException]
Field error in object 'hrEffPplanCyclePo' on field 'paStime': rejected value [2017-01-23]; codes [typeMismatch.hrEffPplanCyclePo.paStime,typeMismatch.paStime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [hrEffPplanCyclePo.paStime,paStime]; arguments []; default message [paStime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'paStime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @com.skg.base.db.annotion.IField java.util.Date for value '2017-01-23'; nested exception is java.lang.IllegalArgumentException]
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:112)
出现转型 异常, 搞得我还以为是 方法搞错了,因为 自定义的 转型方法并没有调用的。。。 这就郁闷了, 可是我并没有放弃 继续 百度 看别人的资料, 看了很多, 比较菜鸟就是这样了。 后来我发现 是 因为 注入的时候 ,位置的问题 :
<!-- 注解驱动 -->
<mvc:annotation-driven conversion-service="conversionService">
</mvc:annotation-driven>
<!--启动MVC注解扫描功能,如果需要使用自定义的类型转换器则需要配置conversion-service,
必须 在 mvc:annotation-driven 的前面 进行 注入,否则报错,起不到作用
-->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 开启扫描 -->
<mvc:annotation-driven />
之前我使用 将 <mvc:annotation-driven conversion-service="conversionService" /> 放在了 <mvc:annotation-driven /> 后面的 , 我把它放在了 前面之后就 起效果了,就是这坑, 至于原因,需要看看spring 源码。。。因此有时候 这样的 引用 先后位置 特别重要, 能够坑死人。。。