DateConverter does not support default String to 'Date' conversion.的處理
在使用beanutils工具類封裝javabean時,beanUtils不提供直接將字符串轉換成Date(java.util.Date)數據類型的方法,
所以會出現下面警告:
或者類似下面異常:
org.apache.commons.beanutils.ConversionException: DateConverter does not support default String to 'Date' conversion.
解決辦法:
1.自己寫個轉換器的代碼塊
try {
ConvertUtils.register(new Converter() {//註冊一個日期轉換器
public Object convert(Class type, Object value) {
Date date1 =null;
if(value instanceof String){
String date = (String) value;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
date1 = sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date1;
}
}, Date.class);
2.哈哈!beanutil這個工具類源碼裏有提供DateLocaleConverter
這個類做註冊的轉化器
ConvertUtils.register(new DateLocaleConverter(), Date.class);
現實工具類方法爲:
- public static void transMap2Bean(Map<String, Object> map, Object obj) {
- //ConvertUtils.register(new DateLocaleConverter(), Date.class);
- ConvertUtils.register(new Converter()
- {
- @SuppressWarnings("rawtypes")
- @Override
- public Object convert(Class arg0, Object arg1)
- {
- System.out.println("註冊字符串轉換爲date類型轉換器");
- if(arg1 == null)
- {
- return null;
- }
- if(!(arg1 instanceof String))
- {
- throw new ConversionException("只支持字符串轉換 !");
- }
- String str = (String)arg1;
- if(str.trim().equals(""))
- {
- return null;
- }
- SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try{
- return sd.parse(str);
- }
- catch(ParseException e)
- {
- throw new RuntimeException(e);
- }
- }
- }, java.util.Date.class);
- if (map == null || obj == null) {
- return;
- }
- try {
- BeanUtils.populate(obj, map);
- } catch (Exception e) {
- System.out.println("Map<String,Object>轉化Bean異常:" + e);
- }
- }