浏览 2046 次
锁定老帖子 主题:formbean动态组装成map
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-05
最近实现一个command模式,需要将web端的formbean作为参数传至EJB端,考虑到EJB端存取参数的一致性,故将 formbean动态组装成map,具体代码如下: (1)下面是一个简单的bean package cn.com.webmaker; public class PersonBean extends BaseBean { private String name; private String age; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
(2)下面是 PersonBean 继承的BaseBean,只有一个toHashMap方法 package cn.com.webmaker; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; public class BaseBean { /** * 根据字段值动态组装map * * @return */ public HashMap toHashMap() { HashMap map = new HashMap(); Class c = this.getClass(); // 根据子类声明的field循环取值 for (int i = 0; i < c.getDeclaredFields().length; i++) { try { // 获取field Field f = c.getDeclaredFields()[i]; String key = f.getName(); // 执行对应的get方法 String method = "get" + key.substring(0, 1).toUpperCase() + key.substring(1); Class pTypes[] = new Class[0]; Method myMethod = c.getMethod(method, pTypes); Object[] arg = new Object[0]; Object res = myMethod.invoke(this, arg); // 保存 map.put(key, res); } catch (Exception e) { // 返回空 return null; } } return map; } }
(3)测试方法 package cn.com.webmaker; public class test { public static void main(String[] args) { PersonBean pb = new PersonBean(); pb.setName("ccc"); pb.setAge("25"); System.out.println(pb.toHashMap().toString()); } }
程序输出预期的 {age=25, name=ccc}
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |