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还是规范就是如此。。。
本文介绍了一个使用Java反射机制解析特定POJO类并将其转换为Tag信息的过程。通过自定义类加载器动态加载类,并利用Apache Commons BeanUtils将对象转换为Map以方便遍历和打印属性名称、值及类型。
1872

被折叠的 条评论
为什么被折叠?



