將HttpServletRequest中的參數反射至實體類

/**
     * 將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);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章