java通过request自动封装复杂对象
发布时间:2020-05-24 22:41:47 所属栏目:Java 来源:互联网
导读:java通过request自动封装复杂对象
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 参考:Jfinal源码,在上面基础上改的,然后分享出来适用JAVAEE平台 [Java]代码/**
* 实现深层封装对象的实例 从request封装对象
* 举例:
* House.class 属性有三个 ID:id 名称:name 门类:Door door
Door类: id name height
传递的参数:house.id=5 & house.name=普通住宅 & door.id=33 & door.name=木门 & 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;
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
