BeanUtils.populate Date转换异常

2013-12-08 veryyoung 更多博文 » 博客 » GitHub »

原文链接 http://veryyoung.me/blog/2013/12/08/beanutils-populate-date.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


今天在用BeanUtils polulate bean的时候遇到了一下的异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.commons.beanutils.ConversionException: DateConverter does not support default String to 'Date' conversion.

看异常消息,是前端传来的字符串不能转换为Date类型的问题

解决方案: 编写String转换为Date的DateTimeConverter,并注册到 ConvertUtils 然后BeanUtilsBean 使用这个ConvertUtils 去转换 代码如下:

SnsScore score = new SnsScore();
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPattern("yyyy-MM-dd");
ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();
convertUtilsBean.deregister(Date.class);
convertUtilsBean.register(dtConverter, Date.class);
BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean,
    new PropertyUtilsBean());
beanUtilsBean.populate(score, request.getParameterMap());
//BeanUtils.populate(score, request.getParameterMap());