package com.util;
import java.lang.reflect.Field;
import java.util.Map;
/**
* java中struts框架封装页面数据的方法
* @author Administrator
*
*/
public class ObjecFactory {
/**
* 把map集合中的数据封装到user中
*
*/
public static <T> T getObject(T user,
Map<String,String[]> map)
throws Exception{
//获取user对象对应的类型
Class cla=user.getClass();
//从该类型中获取,所有声明的属性(字段)
Field[] fields=cla.getDeclaredFields();
for(Field f:fields){
//设置每一个属性可以被操作
f.setAccessible(true);
//获取该字段的名称(属性名)
String name=f.getName();
//按照属性名从map中查找对应的值
String[] values=map.get(name);
//如果不为空,说明已经获取数据了
if(values!=null){
//判断该字段是否是数组
if(f.getType().isArray()){
//给数组直接赋值
f.set(user,values);
}else{
//获取数组中的第一个值
String value=values[0];
//根据字段的数据类型采用不同的方式赋值
if(f.getType()==int.class){
f.set(user,Integer.parseInt(value));
}else if(f.getType()==long.class){
f.set(user,Long.parseLong(value));
}else if(f.getType()==double.class){
f.set(user,Double.parseDouble(value));
}else{
f.set(user,value);
}
}
}
}
return user;
}
}