文档章节

将request传的值一次性装入bean

卢水发
 卢水发
发布于 2014/06/17 15:19
字数 457
阅读 15
收藏 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中属性一样;

© 著作权归作者所有

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

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

lionets
2015/01/15
0
0
使用 Postman 与 Kotlin 交互REST API接口数据

在前面2篇文章使用 Kotlin 和Spring Boot 2.0快速开发REST API接口和使用 Kotlin 和Spring Boot 2.0快速开发REST API客户端介绍了如何使用简单代码快速实现REST API的服务端接口及客户端应用...

B超
09/11
0
0
SpringMVC之后台接收参数与前台传递数据

1、接收请求参数 1. 使用HttpServletRequest获取 Java代码 @RequestMapping("/login.do") publicString login(HttpServletRequest request){ String name = request.getParameter("name") St......

Java架构师那些事
08/19
0
0
Java程序员从笨鸟到菜鸟之(二十三)常见乱码解决以及javaBean基础知识

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

长平狐
2012/11/12
86
1
Spring中关于bean的作用域与生命周期

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

忻胜霄
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链入门教程以太源码分析accounts包简介

兄弟连区块链教程以太源码分析accounts包简介 accounts包实现了eth客户端的钱包和账户管理。 账号的数据结构: typeAccount struct {Address common.Address `json:"address"` // Ether...

兄弟连区块链入门教程
21分钟前
0
0
sed命令详解及运用

10月17日任务 9.4/9.5 sed 9.3、正则介绍 - sed命令(上) sed是流编辑器,默认不编辑源文件,是以行为单位从源文件抽取数据,进而处理再输出于屏幕上;可能有的人说那我直接vi不就好了嘛,但...

zgxlinux
23分钟前
0
0
iOS App “去评分” 功能的几种实现总结

通常 App 都会在它的设置页面或者关于页面添加一个“去评分”选项,或者在用户使用 App 过程中适当时机弹窗,引导用户跳转到 App Store 对当前 App 进行评分或者撰写评论。 绝大部分 App 实现...

秦无炎
28分钟前
0
0
Chrome 图片解码与 Image Decoding Hint

我在之前的一篇文章Chrome 图片解码与 Image.decode API,说明了为什么图片解码可能会导致非合成器动画的阻塞和如何使用 Image.decode API 来避免动画的阻塞。不过虽然 Image.decode API 给页...

全部原谅
29分钟前
0
0
java获取ip和地区

String s = HttpUtil.sendPost("http://pv.sohu.com/cityjson");JSONObject jsonObject = JSONObject.parseObject(s.substring(s.indexOf("{"), s.indexOf("}") + 1));jsonObject.get("c......

吴伟祥
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部