public static Object getRequestConvertBean(HttpServletRequest request, Class<?> beanClass) {
Object obj = null;
try {
//创建一个新的无指向实体反射
obj = beanClass.newInstance();
//获取该类的所有字段信息
Field[] fields = beanClass.getDeclaredFields();
Class<?> fieldType;
String fieldName;
for (Field field : fields) {
field.setAccessible(true);
//获取当前循环的字段名称
fieldName = field.getName();
if (Modifier.isFinal(field.getModifiers())) {
continue;
}
//如果再request中不存在就赋值为null
if (StringUtils.isBlank(request.getParameter(fieldName)) || StringUtils.isEmpty(request.getParameter(fieldName))) {
field.set(obj, null);
continue;
}
//获取当前字段的类型
fieldType = field.getType();
//根据当前类型判断强转并通过当前字段名取值并赋值到新的类中
if (fieldType == int.class || fieldType == Integer.class) {
field.set(obj, Integer.valueOf(request.getParameter(fieldName)));
} else if (fieldType == long.class || fieldType == Long.class) {
field.set(obj, Long.valueOf(request.getParameter(fieldName)));
} else if (fieldType == float.class || fieldType == Float.class) {
field.set(obj, Float.valueOf(request.getParameter(fieldName)));
} else if (fieldType == double.class || fieldType == Double.class) {
field.set(obj, Double.valueOf(request.getParameter(fieldName)));
} else if (fieldType == boolean.class || fieldType == Boolean.class) {
field.set(obj, Boolean.valueOf(request.getParameter(fieldName)));
} else if (fieldType == short.class || fieldType == Short.class) {
field.set(obj, Short.valueOf(request.getParameter(fieldName)));
} else if (fieldType == BigDecimal.class) {
field.set(obj, BigDecimal.valueOf(Long.parseLong(request.getParameter(fieldName))));
} else if (fieldType == Date.class) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
field.set(obj, formatter.parse(request.getParameter(fieldName)));
} else if (fieldType == String.class) {
field.set(obj, request.getParameter(fieldName));
} else {
//如果不在常见的基本类型就讲数据赋值为null
field.set(obj, null);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
java通过反射将request数据转为实体类数据
最新推荐文章于 2024-05-22 12:43:45 发布
这段代码将HttpServletRequest中的参数值填充到指定类的新实例中,基于字段类型进行转换,如int、String、Date等,并处理不存在或为空的参数。
摘要由CSDN通过智能技术生成