通过HttpServletRequest请求对象,将前端使用form表单请求的参数拷贝到javaBean中
封装通用代码
/**
* 复制请求参数到javaBean
*
* @param HttpServletRequest
* @param Object
* @return Object
*/
public static Object copyRequestParamToBean(HttpServletRequest request, Object object) throws Exception
{
// 1. 声明参数对象
JSONObject params = new JSONObject();//可以将此对象换为HashMap
// 2. 获取所有的请求参数
Enumeration<String> parameters = request.getParameterNames();
// 3. 将所有的参数保存到json对象中
while (parameters.hasMoreElements())
{
String paramname = parameters.nextElement();// 参数名称
params.put(paramname, request.getParameter(paramname));
}
// 4.遍历匹配java查询Bean属性
Field[] fields = object.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++)
{
// 4.1获取属性信息
Field field = fields[i];// 属性信息
String attributename = field.getName();// javaBean属性名称
String type = field.getGenericType().toString();// 字段数据类型
if (!params.containsKey(attributename))
{
continue;// 只更新上送的参数
}
if (params.get(attributename) == null)
{
continue;// 过滤掉空参数
}
String setName = "set" + attributename.substring(0, 1).toUpperCase() + attributename.substring(1); // 将属性的首字符大写,方便构造get,set方法
// 4.2设置属性参数
switch (type)
{
case "class java.math.BigDecimal":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { BigDecimal.class });
// 执行set方法
method.invoke(object, new Object[] { new BigDecimal(params.getString(attributename)) });
break;
}
case "class java.lang.Boolean":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Boolean.class });
// 执行set方法
method.invoke(object, new Object[] { new Boolean(params.getString(attributename)) });
break;
}
case "class java.lang.Byte":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Byte.class });
// 执行set方法
method.invoke(object, new Object[] { new Byte(params.getString(attributename)) });
break;
}
case "class java.util.Date":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Date.class });
Date date = new Date(params.getLong(attributename));
// 执行set方法
method.invoke(object, new Object[] { date });
break;
}
case "class java.lang.Double":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Double.class });
// 执行set方法
method.invoke(object, new Object[] { new Double(params.getString(attributename)) });
break;
}
case "class java.lang.Float":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Float.class });
// 执行set方法
method.invoke(object, new Object[] { new Float(params.getString(attributename)) });
break;
}
case "class java.lang.Integer":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Integer.class });
// 执行set方法
method.invoke(object, new Object[] { params.getInt(attributename) });
break;
}
case "class java.lang.Long":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { Long.class });
// 执行set方法
method.invoke(object, new Object[] { params.getLong(attributename) });
break;
}
case "class java.lang.String":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { String.class });
// 执行set方法
method.invoke(object, new Object[] { params.getString(attributename) });
break;
}
case "class net.sf.json.JSONObject":
{
// 获取set方法
Method method = object.getClass().getMethod(setName, new Class[] { JSONObject.class });
JSONObject json = new JSONObject();
// 执行set方法
method.invoke(object, new Object[] { json.fromObject(params.getString(attributename)) });
break;
}
case "class java.util.List":
{
break;
}
case "class java.util.ArrayList":
{
break;
}
default:
{
throw new Exception("未设定的数据类型:" + type);
}
}
}
return object;
}
若有新的想法或建议,欢迎评论留言,谢谢!!!