BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。实例:
CorporationInfo corp = new CorporationInfo();
corp.setId(spForm.getCorpCode());
boolean bload = true;
try {
corp = (CorporationInfo) corp.openById();
} catch (Exception e) {
bload = false;
}
if (bload) {
Map corpMap = BeanUtils.describe(corp);
Map formMap = BeanUtils.describe(form);
System.out.println("载入信息." + corpMap + "\r\n" + formMap);
for (Iterator it = corpMap.keySet().iterator(); it.hasNext();) {
String name = (String) it.next();
System.out.println("set "+name+" "+corpMap.get(name));
if (Function.normalizeString(name).toLowerCase().equals("id") ||
Function.normalizeString(name).equals("") ||
Function.normalizeString(name).equals("status") ||
Function.normalizeString(name).equals("action"))
continue;
if (formMap.containsKey(name) && null != corpMap.get(name)) {
try {
BeanUtils.copyProperty(form, name, corpMap.get(name));
System.out.println("set "+name+" "+corpMap.get(name));
} catch (InvocationTargetException e) {
System.out.println(e.getMessage());
} catch (Exception ie) {
System.out.println(ie.getMessage());
}
}
}
if (formMap.containsKey("appliedcorp")) {
BeanUtils.copyProperty(form, "appliedcorp", corpMap.get("corpname"));
}
}
}