code: public static <T> T copyProps(T from, T to, Enumeration<String> props1,
  			String props2) throws BeansException, IntrospectionException {
  		if (props1 == null || from == null || to == null)
  			return to;
  
  		BeanWrapperImpl wFrom = new BeanWrapperImpl(from);
  		BeanWrapperImpl wTo = new BeanWrapperImpl(to);
  
  		HashSet<String> set = new HashSet<String>();
  		while (props1.hasMoreElements()) {
  			String prop = props1.nextElement();
  			Matcher m = P_PROP_NAME.matcher(prop);
  			if (m.find())
  				set.add(m.group());
  		}
  
  		if (props2 != null)
  			for (String prop : props2.split(", "))
  				set.add(prop);
  
  		for (String prop : getPropertyNames(from.getClass())) {
  			if (!set.contains(prop))
  				continue;
  			wTo.setPropertyValue(prop, wFrom.getPropertyValue(prop));
  		}
  
  		return to;
  	}
docs: 把from在props1或props2中出现的属性拷贝到to。props1中可以包括from中没有的属性名称。
  props2主要用于checkbox参数名称。