entity中这样写:
private String xxx; //setXxx、getXxx方法
...
form中可以这样写:
private String[] xxx; //setXxx、getXxx方法
...
提交到后台之后这样解析:
public static synchronized Collection getCollection(HttpServletRequest parameters, Class entity) throws InvocationTargetException, InstantiationException, IllegalAccessException { Object dto = entity.newInstance(); PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(dto); String propName = null; int length = 0; String[] tmp = null; for(int i = 0; i < origDescriptors.length; i++){ propName = origDescriptors[i].getName(); //属性不能是class if(!"class".equals(propName)){ tmp = parameters.getParameterValues(propName); if(null != tmp){ length = tmp.length; break; } } } Collection result = new ArrayList(); for (int j = 0; j < length; j++) { Object item = entity.newInstance(); for (int i = 0; i < origDescriptors.length; i++) { if (origDescriptors[i].getReadMethod() == null) { if (log.isTraceEnabled()) { log.trace("-->No getter on JavaBean for " + origDescriptors[i].getName() + ", skipping"); } continue; } String name = origDescriptors[i].getName(); if ("class".equals(name)) { continue; // No point in trying to set an object's class } Object value = null; tmp = parameters.getParameterValues(name); if(null != tmp) value = tmp[j]; BeanUtils.copyProperty(item, name, value); } result.add(item); } return result; }
然后根据生成的集合进行后台数据处理即可。