/**
* 將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中的參數反射至實體類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.