读书人

Benutils拷贝时出错求详解解决方案

发布时间: 2013-11-25 13:22:27 作者: rapoo

Benutils拷贝时出错,求详解

package cn.customer.utils;

import java.sql.Date;
import java.util.Enumeration;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

public class WebUtils {

//把request中的数据封装到bean中
public static <T>T request2Bean(HttpServletRequest request,Class<T> clazz){

try {
T t = clazz.newInstance();
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement();
String value = request.getParameter(name);

BeanUtils.setProperty(t,name,value);
}

return t;

} catch (Exception e) {
throw new RuntimeException(e);
}

}

public static String makeId(){
return UUID.randomUUID().toString();
}
}

[解决办法]
实体类Customer里的birthday是Date类型的,你设置值时转成了String类型,
String value = request.getParameter(name);
而 BeanUtils.setProperty这个方法不能自动进行类型转换 ,所以就报类型不匹配错误了。
遍历request里值时可以加个判断,如果是birthday先转为Date类型,再setProperty应该就可以了

读书人网 >Java Web开发

热点推荐