使用反射机制 来把一个具体的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还是规范就是如此。。。

posted @ 2012-02-18 14:15  张良  阅读(299)  评论(0编辑  收藏  举报