formbeanダイナミックアセンブリmap
最近ではcommandモードが実現され、web側のformbeanをパラメータとしてEJB側に伝達する必要があり、EJB側アクセスパラメータの整合性を考慮して、
formbeanはmapに動的に組み立てられ、具体的なコードは以下の通りです.
(1)簡単なbeanです
(2)次はPersonBeanが引き継いだBaseBeanであり,toHashMapメソッドは1つしかない.
(3)試験方法
プログラム出力予想{age=25,name=ccc}
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メソッドは1つしかない.
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}