首页 > Java开发 > DateConverter does not support default String to ‘Date’ conversion.

DateConverter does not support default String to ‘Date’ conversion.

在使用beanutils工具类时,因为beanUtils不提供直接将字符串转换成Date(java.util.Date)数据类型的方法,

查看源码,beanutils支持的转化类型如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. * java.lang.BigDecimal  
  2. * java.lang.BigInteger  
  3. boolean and java.lang.Boolean  
  4. byte and java.lang.Byte  
  5. char and java.lang.Character  
  6. * java.lang.Class  
  7. double and java.lang.Double  
  8. float and java.lang.Float  
  9. int and java.lang.Integer  
  10. long and java.lang.Long  
  11. short and java.lang.Short  
  12. * java.lang.String  
  13. * java.sql.Date  
  14. * java.sql.Time  
  15. * java.sql.Timestamp   



所以,处理方式有2种,第一是将bean中的Date类型,引入java.sql.Date的包;第二种,就需要自己注册一个转换器。

源码里有提供DateLocaleConverter这个类做注册的转化器

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. ConvertUtils.register(new DateLocaleConverter(), Date.class);  


当然,这里也能自己实现,

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. ConvertUtils.register(new Converter()  
  2.        {  
  3.               
  4.   
  5.            @SuppressWarnings("rawtypes")  
  6.            @Override  
  7.            public Object convert(Class arg0, Object arg1)  
  8.            {  
  9.                System.out.println("注册字符串转换为date类型转换器");  
  10.                if(arg1 == null)  
  11.                {  
  12.                    return null;  
  13.                }  
  14.                if(!(arg1 instanceof String))  
  15.                {  
  16.                    throw new ConversionException("只支持字符串转换 !");  
  17.                }  
  18.                   
  19.                String str = (String)arg1;  
  20.                if(str.trim().equals(""))  
  21.                {  
  22.                    return null;  
  23.                }  
  24.                   
  25.                SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.                   
  27.                try{  
  28.                    return sd.parse(str);  
  29.                }  
  30.                catch(ParseException e)  
  31.                {  
  32.                    throw new RuntimeException(e);  
  33.                }  
  34.                   
  35.            }  
  36.               
  37.        }, java.util.Date.class);  

 

现实环境中,工具类方法例子为:

[java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. public static void transMap2Bean(Map<String, Object> map, Object obj) {    
  2.     //ConvertUtils.register(new DateLocaleConverter(), Date.class);  
  3.     ConvertUtils.register(new Converter()    
  4.     {    
  5.              
  6.   
  7.         @SuppressWarnings("rawtypes")    
  8.         @Override    
  9.         public Object convert(Class arg0, Object arg1)    
  10.         {    
  11.             System.out.println("注册字符串转换为date类型转换器");    
  12.             if(arg1 == null)    
  13.             {    
  14.                 return null;    
  15.             }    
  16.             if(!(arg1 instanceof String))    
  17.             {    
  18.                 throw new ConversionException("只支持字符串转换 !");    
  19.             }    
  20.             String str = (String)arg1;    
  21.             if(str.trim().equals(""))    
  22.             {    
  23.                 return null;    
  24.             }    
  25.                  
  26.             SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
  27.                  
  28.             try{    
  29.                 return sd.parse(str);    
  30.             }    
  31.             catch(ParseException e)    
  32.             {    
  33.                 throw new RuntimeException(e);    
  34.             }    
  35.                  
  36.         }    
  37.              
  38.     }, java.util.Date.class);    
  39.     if (map == null || obj == null) {    
  40.         return;    
  41.     }    
  42.     try {    
  43.         BeanUtils.populate(obj, map);    
  44.     } catch (Exception e) {    
  45.         System.out.println("Map<String,Object>转化Bean异常:" + e);    
  46.     }    
  47. }  

本文固定链接: http://www.devba.com/index.php/archives/5302.html | 开发吧

报歉!评论已关闭.