/**
* 将HttpServletRequest中的参数反射至实体类
* @param <T>
* @param clazz
* @param request
* @return
*/
private <T> void reflectParameter(T obj, HttpServletRequest request) {
try {
//获取对象的Class
Class<?> clazz = obj.getClass();
//获取Class中所有已声明的属性集合
Field[] fileds = clazz.getDeclaredFields();
//遍历属性结合
for (Field f : fileds) {
//过滤被final、static修饰的成员变量
if ((f.getModifiers() & Modifier.FINAL) > 0
|| (f.getModifiers() & Modifier.STATIC) > 0) {
continue;
}
//取消所有私有变量的限制
f.setAccessible(true);//取消Field的访问检查
//获取属性的类型,long/int/string....
Class<?> fieldType = f.getType();
//获取属性的名字
String fieldName = f.getName();
//根据属性的名字从request中获取value
String paramVal = request.getParameter(fieldName);
//判断类型,如果是String
if (String.class == fieldType) {
f.set(obj, paramVal);
//判断类型,如果是long,则使用NumberUtils.toLong,即使为空,也赋默认值0L
} else if (long.class == fieldType || Long.class == fieldType) {
f.set(obj, NumberUtils.toLong(paramVal));
//判断类型,如果是int,则使用NumberUtils.toInt,即使为空,也赋默认值0
} else if (int.class == fieldType || Integer.class == fieldType) {
f.set(obj, NumberUtils.toInt(paramVal));
//判断类型,如果是date,则使用DateUtil.parseDateNewFormat格式化日期格式
} else if (Date.class == fieldType) {
f.set(obj, DateUtil.parseDateNewFormat(paramVal));
}
}
} catch (IllegalArgumentException e) {
LOGGER.error("", e);
} catch (IllegalAccessException e) {
LOGGER.error("", e);
}
}
将HttpServletRequest中的参数反射至实体类
最新推荐文章于 2022-11-13 13:09:57 发布