通过反射自动封装表单字段
2014-09-16 17:01
288 查看
package cn.jbit.util; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.URLDecoder; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import javax.imageio.spi.ServiceRegistry.Filter; import javax.servlet.http.HttpServletRequest; public class RequestUtil { public static Object getObject(HttpServletRequest request, Class clazz, String enc) throws UnsupportedEncodingException, IntrospectionException, InstantiationException, IllegalAccessException { Field[] fields = clazz.getDeclaredFields(); Object obj = clazz.newInstance(); request.setCharacterEncoding(enc); Map<String, String> map = new HashMap<String, String>(); if (request.getMethod().equals("GET")) { System.out.println("-----------GET--------------------"); String query = URLDecoder.decode(request.getQueryString(), enc); String[] str = query.split("&"); for (String string : str) { try { map.put(string.split("=")[0], string.split("=")[1]); } catch (Exception e) { e.printStackTrace(); } } } else { System.out.println("-----------POST--------------------"); Map<String, String[]> parmmap = request.getParameterMap(); for (String key : parmmap.keySet()) { try { map.put(key, parmmap.get(key)[0]); } catch (Exception e) { e.printStackTrace(); } } } for (Field field : fields) { try { PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz); Method seter = pd.getWriteMethod(); if (field.getType().getName().equals(int.class.getName()) || field.getType().getName() .equals(Integer.class.getName())) { seter.invoke(obj, Integer.valueOf(map.get(field.getName()))); } else if (field.getType().getName() .equals(Date.class.getName())) { SimpleDateFormat sdf = new SimpleDateFormat(); Date date = sdf.parse(map.get(field.getName())); seter.invoke(obj, date); } else if (field.getType().getName() .equals(Double.class.getName()) || field.getType().getName() .equals(double.class.getName())) { seter.invoke(obj, Double.valueOf(map.get(field.getName()))); } else if (field.getType().getName() .equals(String.class.getName())) { seter.invoke(obj, map.get(field.getName())); } } catch (Exception e) { System.out.println("异常 了"); } } return obj; } }
相关文章推荐
- Spring MVC 3 表单提交时,自动将各输入字段封装成实体Bean
- 反射的应用 将form表单的数据自动封装为对象
- 反射可以通过FieldInfo.SetValue设置任何字段的值。
- 文本框焦点自动跳转及通过回车键提交表单的几种代码
- 对于页面一个表单存在很多字段需要验证的封装
- 通过反射调用類的方法,屬性,字段,索引器(2種方法)
- 通过反射改变对象中非公有字段的值
- .实现文本框焦点自动跳转及通过回车键提交表单
- 通过java反射获取任意对象的字段名及字段值
- 通过反射自动填充实体
- 如何实现文本框焦点自动跳转及通过回车键提交表单
- 自动表单数据封装到javaBean中
- 在ASP.NET登录页面中如何实现文本框焦点自动跳转及通过回车键提交表单
- 如何在asp.net实现文本框焦点自动跳转及通过回车键提交表单
- 通过JAVA反射实现简单的ORM,将查询结果封装为对象
- 如何实现文本框焦点自动跳转及通过回车键提交表单
- 反射可以通过FieldInfo.SetValue设置任何字段的值
- 如何实现文本框焦点自动跳转及通过回车键提交表单
- 如何实现文本框焦点自动跳转及通过回车键提交表单[引用]
- asp.net通过反射技术实现Ajax(2)--前台javascript封装的Ajax对象