/***
按指定字符集解析HttpServletRequest 生成给定的类的Bean
*
* 1.字符集不支持,获取bean类型内省信息失败时,返回null
* 2.生成bean属性失败时,属性值不设置
*
*
*@paramrequest
*@paramt
*@paramcharset
*@param
*@return
*/
public static T convertHttpRequest2Bean(HttpServletRequest request, T t, String charset) {
BeanInfo beanInfo;if (null == request) return null;try{
request.setCharacterEncoding(charset);
beanInfo=Introspector.getBeanInfo(t.getClass());
}catch(Exception e) {
logger.error(e);return null;
}
PropertyDescriptor[] propertyDescriptors= beanInfo.getPropertyDescriptors();//bean中全部属性
PropertyDescriptor descriptor;//bean属性描述
String propertyName;//bean属性名称
Class fieldType;//bean属性类别
String paraValueStr;//request对应的属性值字符串
Object paraValueObj;//request转换为对应类别的属性值
for (int i = 0; i < propertyDescriptors.length; i++) {
descriptor=propertyDescriptors[i];
propertyName=descriptor.getName();
fieldType=descriptor.getPropertyType();
paraValueStr=request.getParameter(propertyName);if (StringUtils.isEmpty(paraValueStr)) continue;try{if (long.class.equals(fieldType)) {
paraValueObj=Long.parseLong(paraValueStr.trim());
}else if (short.class.equals(fieldType)) {
paraValueObj=Short.parseShort(paraValueStr.trim());
}else if (int.class.equals(fieldType)) {
paraValueObj= Integer.parseInt(paraValueStr.trim().replaceAll("^(-?\\d+)\\.[0]+$", "$1"));
}else{
paraValueObj=paraValueStr;
}
descriptor.getWriteMethod().invoke(t, paraValueObj);
}catch(Exception e) {
logger.error(e);
}
}returnt;
}