package cn.itcast.domain;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class tesst {
@Test
public void test() throws IllegalAccessException, InvocationTargetException{
String birthday="1980-11-24";
User user =new User();
BeanUtils.setProperty(user, "birthday",birthday);
ConvertUtils.deregister(DateConverter.class);
ConvertUtils.register(new Converter(){
@Override
public Object convert(Class type, Object arg1) {
if(arg1==null){
return null;
}if(!(arg1 instanceof String)){
throw new ConversionException("非字符串");
}
String str=(String) arg1;
if(str.trim().equals("")){
return null;
}
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}, Date.class);
}
}
org.apache.commons.beanutils.ConversionException: DateConverter does not support default String to 'Date' conversion.
at org.apache.commons.beanutils.converters.DateTimeConverter.toDate(DateTimeConverter.java:468)
at org.apache.commons.beanutils.converters.DateTimeConverter.convertToType(DateTimeConverter.java:343)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156)
at org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60)
at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:470)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1004)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:456)
at cn.itcast.domain.tesst.test(tesst.java:23)
求教怎么报这个错误了?
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;
public class tesst {
@Test
public void test() throws IllegalAccessException, InvocationTargetException{
String birthday="1980-11-24";
User user =new User();
BeanUtils.setProperty(user, "birthday",birthday);
ConvertUtils.deregister(DateConverter.class);
ConvertUtils.register(new Converter(){
@Override
public Object convert(Class type, Object arg1) {
if(arg1==null){
return null;
}if(!(arg1 instanceof String)){
throw new ConversionException("非字符串");
}
String str=(String) arg1;
if(str.trim().equals("")){
return null;
}
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}, Date.class);
}
}
org.apache.commons.beanutils.ConversionException: DateConverter does not support default String to 'Date' conversion.
at org.apache.commons.beanutils.converters.DateTimeConverter.toDate(DateTimeConverter.java:468)
at org.apache.commons.beanutils.converters.DateTimeConverter.convertToType(DateTimeConverter.java:343)
at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:156)
at org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60)
at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:470)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1004)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:456)
at cn.itcast.domain.tesst.test(tesst.java:23)
求教怎么报这个错误了?