当前页面: 开发资料首页 → J2EE 专题 → 有关使用反射机制与JavaBean取数据记录并输出的问题。
有关使用反射机制与JavaBean取数据记录并输出的问题。
摘要: 有关使用反射机制与JavaBean取数据记录并输出的问题。
在IBM的开发网站上查到这一篇文章《运用类反射机制简化Struts应用程序的开发》
地址:http://www-128.ibm.com/developerworks/cn/java/l-struts-reflect/
这里面提到了用反射机制来做,用的是ActionForm,有setXXX方法。但因为我做的项目里没有用到ActionForm,而是使用动态的DynaValidatorForm,不存在setXXX方法。
所以请教各位大虾要怎么改,有没有其他更好的方法(实现数据的读取,并可以根据字段名来方便输出)。
没什么不一样的,因为动态formBean本身采用的就是java的反射机制。
不明白你说的要怎么用。
如果已经完成,基本来说没有改的必要
成了,关键步骤:
LazyDynaClass dynaClass = new LazyDynaClass("bean");
DynaBean bean = new LazyDynaBean(dynaClass);
while (rs.next()) {
// 根据SQ语句从数据库取值
c1 = dynaClass.newInstance();
for (int i=1; i<=columnCount; i++) {
if(rs.getString(rsmd.getColumnName(i))!=null){
recordValue=rs.getString(rsmd.getColumnName(i)).trim();
}else{
recordValue="";
}
dynaClass.add(rsmd.getColumnName(i).toString(),String.class);
bean.set(rsmd.getColumnName(i),rs.getString(rsmd.getColumnName(i)));
Method m=bean.getClass().getMethod("set", new Class[]{recordValue.getClass(),Object.class});
m.invoke(c1, new Object[]{rsmd.getColumnName(i).toLowerCase(),recordValue});
}
up?
Method m=bean.getClass().getMethod("set", new Class[]{recordValue.getClass(),Object.class});
不要这么掉,性能很低的,没有缓存Method,用bean规范里面的Introspector实现,他作缓存了,如果觉得麻烦使用common-beanutil也可以