使用反射机制 来把一个具体的bean 处理成一个map。并且获得其中的field和值
package tester;
import org.apache.commons.beanutils.BeanMap;
import org.junit.Test;
import com.alcor.builder.generator.web.velocity.Tags;
import com.alcor.util.classloader.GreeterClassLoader;
import junit.framework.TestCase;
public class ReflectTagsTester extends TestCase {
@Test
public void test()throws Exception{
Class pojo = new GreeterClassLoader("D://My Documents//project//VansBuilder//WebContent//WEB-INF//compileTemporaryFold//classes").loadClass("a.a.Cv010001");
Tags c = new Tags();
//针对这个pojo进行解析获得此pojo对应的tags的信息
c.convertTags(pojo);
//把这个bean 变成一个map
BeanMap beanMap = new BeanMap(c);
//循环打印出bean中的proerty的名称以及他的值
for( Object propertyName :beanMap.keySet()){
System.out.println("property: " + propertyName +"/tvalue: " + beanMap.get(propertyName) + "/t/ttype: " + beanMap.getType((String)propertyName).toString());
}
}
}
注意!动态载入的这个Tags的类。其中类变量一定要有set 和get方法。否则无法获取。哪怕是这个类变量是public 也不行。这个问题在commons-beanutils-1.8.1 上存在。不知道是不是bug还是规范就是如此。。。