欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java通过request自动封装复杂对象,javarequest封装,参考:Jfinal源码,

来源: javaer 分享于  点击 44304 次 点评:163

java通过request自动封装复杂对象,javarequest封装,参考:Jfinal源码,


参考:Jfinal源码,在上面基础上改的,然后分享出来适用JAVAEE平台

[Java]代码 ``` java/* * 实现深层封装对象的实例 从request封装对象 * 举例: * House.class 属性有三个 ID:id 名称:name 门类:Door door Door类: id name height 传递的参数:house.id=5 &amp; house.name=普通住宅 &amp; door.id=33 &amp; door.name=木门 &amp; door.height=500 就可以自动封装 / private static final <T> T injectCommonModel(Object model, String modelName, HttpServletRequest request, Class<?> modelClass, boolean skipConvertError) throws Exception{ Method[] methods = modelClass.getMethods(); for (Method method : methods) { String methodName = method.getName(); if (methodName.startsWith("set") == false) // only setter method continue;

        Class<?>[] types = method.getParameterTypes();        if (types.length != 1)                      // only one parameter            continue;        if(TypeConverter.judgeBasicType(types[0])){ //判断是否基本类型            String attrName = methodName.substring(3);            String value = request.getParameter(modelName + "." + StrKit.firstCharToLowerCase(attrName));            if (value != null) {                method.invoke(model, TypeConverter.convert(types[0], value));            }        }else{            Object newModel = types[0].newInstance();            String newModelName = newModel.getClass().getSimpleName();            newModel = injectCommonModel(newModel, StrKit.firstCharToLowerCase(newModelName), request, newModel.getClass(), skipConvertError);            if (newModel != null) {                method.invoke(model, newModel);            }        }    }    return (T)model;}

```

相关栏目:

用户点评