日期:2014-05-19 浏览次数:20810 次
public class Parameter2JavaBean { /** * 把req中的数据按照对象的属性取出来并set到对象当中并返回 * @param <E> * @param req * @param e * @return <E> */ public static <E>E setParameter2JavaBean(HttpServletRequest req, E e){ Class<?> clazz = e.getClass(); Field[] fields = clazz.getDeclaredFields(); for(Field field : fields){ Class<?> typeClass = field.getType(); String value = req.getParameter(field.getName()); if(value != null && !"".equals(value)){ setValue(e, clazz, field, typeClass, value); } } return e; } /** * 调用set方法把值set到对象当中 * @param obj 指定对象 * @param clazz 对象的class * @param field 需要设置值的field对象 * @param typeClass field的类型的class * @param value 对应的值 */ private static void setValue(Object obj, Class<?> clazz, Field field, Class<?> typeClass, String value){ String fieldName = field.getName(); String methodName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); try { Method method = clazz.getDeclaredMethod(methodName, new Class[]{typeClass}); method.invoke(obj, new Object[]{getClassTypeValue(typeClass, value)}); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } /** * 通过class类型获取获取对应类型的值 * @param typeClass class类型 * @param value 值 * @return Object */ private static Object getClassTypeValue(Class<?> typeClass, String value){ if(typeClass == int.class){ if(value.equals("")){ return 0; } return Integer.parseInt(value); }else if(typeClass == short.class){ if(value.equals("")){ return 0; } return Short.parseShort(value); }else if(typeClass == byte.class){ if(value.equals("")){ return 0; } return Byte.parseByte(value); }else if(typeClass == double.class){ if(value.equals("")){ return 0; } return Double.parseDouble(value); }else if(typeClass == boolean.class){ if(value.equals("")){ return false; } return Boolean.parseBoolean(value); }else if(typeClass == float.class){ if(value.equals("")){