文档章节

将request传的值一次性装入bean

卢水发
 卢水发
发布于 2014/06/17 15:19
字数 457
阅读 14
收藏 0

先将前端传过来的值封装到map中,可以使用request.getParameterNames()简单的完成:

代码如下:

/**
     * bindDataToBean:将前端传过来的数据绑定到Map中. <br/>
     * TODO(这里描述这个方法适用条件 – 可选).<br/>
     * @author Administrator
     * @param clazz
     * @return
     * @since JDK 1.6
     */
    public Map<String,String> bindDataToMap(){
     this.request.getParameterNames();
     Enumeration pNames = request.getParameterNames();
     Map<String,String> dataMap = new HashMap<String,String>();
     while(pNames.hasMoreElements()){
         String dataName=(String)pNames.nextElement();
         String dataValue = request.getParameter(dataName);
         dataMap.put(dataName, dataValue);
     }
     return dataMap;
    }

下面是将map中的值封装到bean中:

/**
  * bindDataToBean:将前端传过来的数据绑定到bean中. <br/>
  * TODO(这里描述这个方法适用条件 – 可选).<br/>
  * @author Administrator
  * @param clazz
  * @return
  * @since JDK 1.6
  */
    public Object bindDataToBean(Class clazz) {
  try {
   return BeanUtil.setBeanValue(clazz.newInstance(), bindDataToMap());
  } catch (InstantiationException e) {
   e.printStackTrace();
   return null;
  } catch (IllegalAccessException e) {
   e.printStackTrace();
   return null;
  }
 }

下面是具体操作:

/**
     * 给bean对象进行设值
     * @param beanClazz
     * @param object
     * @param oMap
     * @return
     */
    public static Object setBeanValue(Object object,Map<String,String> oMap){
        if(oMap==null||oMap.isEmpty()){
       return null;
     }
     try {
   //获取该bean中的所有字段
   Field[] fields = object.getClass().getDeclaredFields();//获得属性
   for (Field field : fields) {
    if (!field.getName().contains("table")) {
     PropertyDescriptor pd = new PropertyDescriptor(field.getName(),object.getClass());
     Method setMethod = pd.getWriteMethod();//获得get方法
     String typeName = field.getType().getSimpleName().toLowerCase();
     String fieldName = field.getName();
     if(typeName.equals("string")){
      setMethod.invoke(object,DataRever.getString(oMap.get(fieldName)));
     }else if(typeName.equals("int")){
      setMethod.invoke(object,DataRever.getInt(oMap.get(fieldName)));
     }else if(typeName.equals("integer")){
      setMethod.invoke(object,DataRever.getInt(oMap.get(fieldName)));
     }else if(typeName.equals("long")){
      setMethod.invoke(object,DataRever.getLong(oMap.get(fieldName)));
     }else if(typeName.equals("double")){
      setMethod.invoke(object,DataRever.getDouble(oMap.get(fieldName)));
     }else if(typeName.equals("date")){
      setMethod.invoke(object,DateUtils.parse(oMap.get(fieldName).toString()));
     }
    }
   }
   return object;
  } catch (Exception e) {
   System.out.println("转换错误,有可能你传入的对象不是bean对象");
   e.printStackTrace();
   return null;
  }
    }

 

调用时只需要:

UnitUseGB unitusegb = (UnitUseGB) wu.bindDataToBean(UnitUseGB.class);

就这样哪怕是你bean再多属性也不用一个一个set,一个一个的get,

值的注意的是,你的前端表单中的name需要与后台bean中属性一样;

© 著作权归作者所有

共有 人打赏支持
卢水发
粉丝 7
博文 68
码字总数 41134
作品 0
深圳
程序员
Python 的完美 json loads

为了对付表单提交时参数多和 json 结构复杂的情况,我写了一个名为 的处理函数来对请求对象递归调用 以期能够一次性将所有参数转化为更好用的 Python 类型。后来又发现了 web.py 的 对象,使...

lionets
2015/01/15
0
0
Spring中关于bean的作用域与生命周期

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什...

忻胜霄
06/07
0
0
Java程序员从笨鸟到菜鸟之(二十三)常见乱码解决以及javaBean基础知识

乱码问题应该是做javaWeb开发人员都遇到过的问题吧,这个问题当时还影响了我学习java的想法,甚至有过想放弃的想法,没办法,当时年轻,呵呵。其实产生乱码问题的原因有很多,解决乱码的问题...

长平狐
2012/11/12
86
1
Struts2的Stack Context和ValueStack

1、提到Struts2的传值功能时,经常会见到Stack Context和ValueStack等概念,那么它们到底是什么,有什么作用呢。 ValueStack(值栈):Struts2将OGNL上下文设置为Struts2中的ActionContext(内...

Glogo
2013/03/08
0
0
Struts中Action的深入了解

Struts中的Action分为以下几种: 1.Action 2.DispatchAction 3.LookupDispatchAction 4.MappingDispatchAction 1)Action 普通Action 2)DispatchAction 同一Action中有多个执行方法,由param......

iTeacher
2012/01/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问。 配置文件写入如下内容: allow 表示允许访问的IP,deny限制访问的IP。 匹配正...

黄昏残影
6分钟前
0
0
自己动手实现RPC服务调用框架

转载 TCP的RPC 引言 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者)、battercake-consumer(服务调用者)。 设计思路...

雨中漫步的鱼
9分钟前
0
0
Centos6.x安装之后的9件事

Centos6.x安装之后的9件事 这些不是必须都做的,只不过是我个人的习惯,在此记录一下。 1.修改yum源到国内 CentOS系统更换软件安装源 备份你的原镜像文件,以免出错后可以恢复。 mv /etc/yu...

叶云轩
14分钟前
5
0
springboot2 使用jsp NoHandlerFoundException

开发图片上传功能,为验证测试功能是否正常,使用JSP编写表单提交进行测试 开发完成后,请求API提示如下异常: No mapping found for HTTP request with URI [/WEB-INF/jsp/avatar_upload.j...

showlike
20分钟前
0
0
springboot踩坑记--springboot正常启动但访问404

一 spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可以了。 二 正常启动了,但是我写了一个controller ,用的@RestController 注解去配置的controlle...

onedotdot
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部