利用此方法的时候需要传递的参数的名称,必须以行号结尾,去掉行号就是属性名称,比如页面传递name+rowNo,那么实体对象的属性名应该为name。代码如下
//获取页面数据,自动封装成bean对象public List getObjectList(Class clazz,String[] rowNos) throws Exception{List objList = new ArrayList();for(int i=0;rowNos!=null && i<rowNos.length;i++){//创建对象实例Object object = clazz.newInstance();//获取类声明的属性Field[] fields = clazz.getDeclaredFields();StringBuffer buffer = null;//遍历属性,执行封装for(int j=0;j<fields.length;j++){//获取属性的名字String fieldName = fields[j].getName();//得到参数的名字String paraName = fields[j].getName()+rowNos[i];//如果获取参数值为空则继续循环String value = getValueNull(paraName);if(value==null){continue;} //参数值Object[] paramValue =new Object[1];if(fields[j].getType().toString().equals("class java.lang.String")){paramValue[0]=value;}if(fields[j].getType().toString().equals("class java.lang.Integer")){paramValue[0]=new Integer(value);}if(fields[j].getType().toString().equals("class java.lang.Double")){paramValue[0]=new Double(value);}if(fields[j].getType().toString().equals("class java.util.Date")){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");paramValue[0]=sdf.parse(value);}//参数类型Class[] paramType= {fields[j].getType()}; //得到set方法的名字buffer = new StringBuffer("set"); buffer.append(fieldName.substring(0, 1).toUpperCase()); buffer.append(fieldName.substring(1)); //获取放回 Method method = clazz.getDeclaredMethod(buffer.toString(), paramType); //执行方法 method.invoke(object,paramValue);}//将当前对象放到list中objList.add(object);}return objList;}
新闻热点
疑难解答