使用反射获取Java bean属性
// buyVO 对象
Field[] field = buyVO.getClass().getDeclaredFields();
for(int j=0 ; j<field.length ; j++){ //遍历所有属性
String name = field[j].getName(); //获取属性的名字
String getname = "";
if(name.equals("sType")){ //特殊字段特殊处理
getname = "get"+name;
}else{
getname = "get"+name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写
}
String type = field[j].getGenericType().toString(); //获取属性的类型
if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名
Method m = buyVO.getClass().getMethod(getname);
String valueTemp = (String) m.invoke(buyVO); //调用getter方法获取属性值
if(value != null){
request.setAttribute(name,valueTemp);
}
}else if(type.equals("class java.lang.Integer") || type.equals("int")){
Method m = buyVO.getClass().getMethod(getname);
Object o = m.invoke(buyVO); //调用getter方法获取属性值
if(null !=o){
int valueTemp = (Integer) o;
if(value != null){
request.setAttribute(name,valueTemp);
}
}
}else if(type.equals("Double") || type.equals("class java.lang.Double")){
Method m = buyVO.getClass().getMethod(getname);
Object o = m.invoke(buyVO); //调用getter方法获取属性值
if(null !=o){
Double valueTemp = (Double) o;
if(value != null){
request.setAttribute(name,valueTemp);
}
}
}
}