站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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也可以


↑返回目录
前一篇: struts整合spring,没有用到数据库操作,是可以运行的.但在applicationContext.xml中加了dataSource的bean,执行的时候就报错了:Servlet act
后一篇: stuts编程中从一个action如何直接转到另一个action?