参考: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 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;

}

java request 封装对象_java通过request自动封装复杂对象相关推荐

  1. Java反射机制:表单数据自动封装到JavaBean中【IT】

    2019独角兽企业重金招聘Python工程师标准>>>   (2010-07-09 19:50:18) 转载▼ 标签: it 分类: IT路人丁 利用Java的反射机制,模拟一个简单 ...

  2. java 由接口构造对象_Java学习笔记04——类和对象|抽象和接口|构造方法与继承...

    六.Java类 1.  Java中用关键字class来创建类. 2.  类中属性和方法称为类的成员;类的声明和方法要在同一个文件内,不同于C++. 3.  类的定义: [] class [extend ...

  3. java装箱拆箱_Java中的自动装箱与拆箱

    自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如 ...

  4. java子类引用指向父类对象_java 中父类引用指向子类对象时

    继承和方法重写已经很熟悉了,这次 主要验证一下,当一个父类的引用指向一个对象的时候,它会调用子类的方法,而不是父类的. 引用在栈内存中存在对象的内存地址.真正的对象(通过 new Student()创 ...

  5. java session 生命周期_java之hibernate之session中对象的生命周期

    1. session是用来执行对象的crud操作,并且session是对象事务工厂.session是线程级别的,所以生命周期比较短. 2.session中对象的生命周期图: 3.session中对象的 ...

  6. 如何销毁一个实例化对象_JAVA中如何创建和销毁对象

    第1条 考虑用静态方法代替构造器 类可以通过静态工厂方法来提供它的客户端,而不是通过构造器.提供静态工厂方法而不是公有构造器,这样做具有几大优势. 1.静态工厂方法与构造器不同的第一大优势在于,它们有 ...

  7. java中的request对象_java中request对象各种方法的使用实例分析

    本文实例讲述了java中request对象各种方法的使用.分享给大家供大家参考,具体如下: request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息.request对象是 ...

  8. java获取response对象_Java 获取Request,Response对象方法

    第一种.参数 @RequestMapping("/test") @ResponseBodypublic void saveTest(HttpServletRequest req, ...

  9. java list 拼音排序_java中实现List集合中对象元素按其属性的中文拼音排序

    java中List集合的元素是按照添加顺序排序的,我们在实际开发过程中,可能会遇到需要对其内容进行排序的场景,接下来对我遇到的场景所采用的解决方式做个总结. 一.业务场景 管理后台商户名称下拉列表,需 ...

最新文章

  1. C++中的指针与饮用
  2. MySQL从入门到搞定实战
  3. 【Linux】44.设置ubuntu电脑为简单的密码
  4. 数据库系统实训——实验八——数据库维护
  5. saltstack中grains简介
  6. 报 There is insufficient memory for the Java Runtime Environment to continue. 的问题
  7. CSS3实现轮播图效果
  8. python 3d游戏引擎哪个好_五大开源游戏引擎介绍
  9. 录音文件下载_录音啦(文字语音转换)软件安装教程
  10. 树莓派4B开机自动发微信报告ip地址
  11. SQL Server 索引 之 书签查找 第十一篇
  12. 逆概率加权Doubly Robust Methods
  13. uniapp 小程序扫描二维码
  14. 什么是代理服务器(Proxy)
  15. 5.2 PMBOK--收集需求
  16. 星起航跨境—亚马逊发展现状及未来趋势分析
  17. 软件定义广域网和即将到来的网络洪流
  18. 关于百度快照问题的若干说明
  19. Android的multidex带来的性能问题-减慢app启动速度, from泡在网上的日子
  20. PB动态数据管道技术实用编程

热门文章

  1. 计算机软件专利申请期限,软件发明专利申请期限为何那么长
  2. document.addeventlistener方法不执行_JUnit 5 测试方法的执行优先级
  3. 计算机翻译辅助工具安卓版,计算机辅助翻译软件
  4. Digest authentication
  5. 在虚拟机上运行vxWorks
  6. nginx 怎么重新编译安装mysql,centos 下 编译安装 nginx + mysql + php 服务
  7. php mongo sort -1出错,mongoDB排序引起的ERROR
  8. discuz viewthread.php,修改discuz论坛的标题header和footer
  9. linux 字符串截取_linux下可执行文件分析
  10. 【转】Magento2 数据库操作