request自动赋值到model

来源:互联网 发布:apache ant for mac 编辑:程序博客网 时间:2024/05/16 08:29

request自动赋值到实体类

publicBaseModel getModel(Object bean,HttpServletRequest request){
Class clazz = bean.getClass();
Method ms[] = clazz.getDeclaredMethods();
String mname ="";
String field ="";
String fieldType="";
String value="";
for(Method m : ms){
mname = m.getName();
if(!mname.startsWith("set") || ArrayUtils.isEmpty(m.getParameterTypes())){
continue;
}
try{
//field = mname.toLowerCase().charAt(3) + mname.substring(4, mname.length());
field = mname.substring(3, mname.length());
value = request.getParameter(field);
if(StringUtils.isEmpty(value)){
continue;
}
fieldType = m.getParameterTypes()[0].getName();
//以下判断value类型
if(String.class.getName().equals(fieldType)){
m.invoke(bean, (String)value);
}else if(Integer.class.getName().equals(fieldType) && NumberUtils.isDigits((String)value)){
m.invoke(bean, Integer.valueOf((String)value));
}else if(Short.class.getName().equals(fieldType) && NumberUtils.isDigits((String)value)){
m.invoke(bean, Short.valueOf((String)value));
}else if(Long.class.getName().equals(fieldType) && NumberUtils.isDigits((String)value)){
m.invoke(bean, Long.valueOf((String)value));
}else if(Float.class.getName().equals(fieldType) && NumberUtils.isNumber((String)value)){
m.invoke(bean, Float.valueOf((String)value));
}else if(Double.class.getName().equals(fieldType) && NumberUtils.isNumber((String)value)){
m.invoke(bean, Double.valueOf((String) value));
}else if(Date.class.getName().equals(fieldType)){
m.invoke(bean, DateUtils.parseDate((String)value,"yyyy-MM-dd","yyyy-MM-dd HH:mm:ss"));
}else{
m.invoke(bean, value);
}
}catch(Exception e){
e.printStackTrace();
continue;
}
}
return(BaseModel)bean;
}
BaseModel 为实体类,该方法的参数可以为Object bean也可以为直接把实体类传进来,返回值也可以为Object

0 0