struts1.x中不用FormBean,如何快速把页面表单的数据放入实体bean中

struts1.x中不用FormBean,如何快速把页面表单的数据放入实体bean中呢?代码如下:

在某个action中的代码如下:

// 创建一个集合,用于存放表单里面的数据 Map<String, Object> map = new HashMap<String, Object>(); //实体bean User user = new User(); // 从request中拷贝参数到map中 Helper.getParameter(request, map); // 从map中取出值复制到实体 对象中 Helper.populate(user, map); //Helper里面的两个方法执行后,我们的实体bean,User对象就已经被赋值了。

 

再写一个Helper.java帮助类,代码如下:

里面的代码如下:

 

/** * 从request中拷贝参数到map中. 注意:对于数组参数,只拷贝了第1个元素 * * @param request request对象 * @param map 存放request对象中参数值的map * @return 实际拷贝的参数个数 */ public static int getParameter(HttpServletRequest request, Map map) { int cnt = 0; Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String key = (String) names.nextElement(); String value = request.getParameter(key); // 对于全空格的数据,仍然保留,在保存修改时可能需要 if ((value != null)) { map.put(key, value.trim()); cnt++; } } return cnt; } /** * 从map中取出值复制到bean中 * * @param bean 需要设置属性的目标bean * @param map 提供属性值的源map * @return 实际设置的属性个数 * @throws Exception 设置属性出错 */ public static int populate(Object bean, Map map) throws Exception { int cnt = 0; // Do nothing unless both arguments have been specified if ((bean == null) || (map == null)) { return cnt; } // Loop through the property name/value pairs to be set Iterator names = map.keySet().iterator(); while (names.hasNext()) { // Identify the property name and value(s) to be assigned String name = (String) names.next(); if (name == null) { continue; } Object value = map.get(name); // Perform the assignment for this property setProperty(bean, name, value); cnt++; } return cnt; } /** * 向bean的指定属性写入给定的值,可以自动完成类型转换 * 目前使用的commons组件的BeanUtils的方法 * * @param bean * @param name * @param value * @throws Exception */ public static void setProperty(Object bean, String name, Object value) throws Exception { try { BeanUtils.copyProperty(bean, name, value); } catch (Exception e) { throw new Exception("设置属性出错, 值: " + value.toString() + " 无法设置给属性: " + name + ", 原因:/r/n" + e, e); } }

 

你可能感兴趣的:(bean,exception,struts,object,String,null)