import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class BeanUtil
{
private static Log log = LogFactory.getLog(BeanUtil.class);
public static void copyNotNullProperties(Object dest, Object orig)
throws IllegalAccessException, InvocationTargetException
{
BeanUtilsBean beanUtils = BeanUtilsBean.getInstance();
if (dest == null) {
throw new IllegalArgumentException("No destination bean specified");
}
if (orig == null) {
throw new IllegalArgumentException("No origin bean specified");
}
if (log.isDebugEnabled()) {
log.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")");
}
if ((orig instanceof DynaBean)) {
DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass()
.getDynaProperties();
for (int i = 0; i < origDescriptors.length; i++) {
String name = origDescriptors[i].getName();
if ((!beanUtils.getPropertyUtils().isReadable(orig, name)) ||
(!beanUtils.getPropertyUtils().isWriteable(dest, name))) continue;
Object value = ((DynaBean)orig).get(name);
beanUtils.copyProperty(dest, name, value);
}
}
else if ((orig instanceof Map)) {
Iterator entries = ((Map)orig).entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry)entries.next();
String name = (String)entry.getKey();
if (beanUtils.getPropertyUtils().isWriteable(dest, name))
beanUtils.copyProperty(dest, name, entry.getValue());
}
}
else {
PropertyDescriptor[] origDescriptors = beanUtils.getPropertyUtils()
.getPropertyDescriptors(orig);
for (int i = 0; i < origDescriptors.length; i++) {
String name = origDescriptors[i].getName();
if ("class".equals(name)) {
continue;
}
if ((!beanUtils.getPropertyUtils().isReadable(orig, name)) ||
(!beanUtils.getPropertyUtils().isWriteable(dest, name))) continue;
try {
Object value = beanUtils.getPropertyUtils().getSimpleProperty(orig, name);
if (value != null)
beanUtils.copyProperty(dest, name, value);
}
catch (NoSuchMethodException localNoSuchMethodException)
{
}
}
}
}
}
分享到:
相关推荐
这是一个帮助程序库,用于在类级别验证Java类成员的空值和空值。 它旨在减少样板代码,即,它通过使用多个条件语句来缩短检查类的单个成员的值的时间范围。 我们甚至可以在层次结构级别上检查对象,即成员对象的成员...
encType="multipart/form-data" 根据上传不同,主要分两步,可以有效的解决request.getParameter(String s)是null值
深入Java关键字null
找出文档中的空值,并用前值填充空值,分为大跳(中间有连续空值),和小跳,中间只有一个空值
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类...
空值的判断,空值的过滤,补全空值.ipynb
如果在没有配置好Java环境的情况下使用本支持库,所有对象方法都将返回空值(假,0,“”)。本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java ...
主要介绍了JAVA判断空值方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在空对象模式(Null Object Pattern)中,...在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。
MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。 【例】 查询Sell表中还未收货的订单情况。 SELECT * FROM Sell ...
如果在没有配置好Java环境的情况下使用本支持库,所有对象方法都将返回空值(假,0,“”)。本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java ...
25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ...值:只有HashMap可以让你将空值作为一个表的条目的key或value
主要介绍了详解Java去除json数据中的null空值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
oracle处理空值的方法
mybatis 报空值异常及其解决办法
如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的...
“System.NullReferenceException: 未将对象引用设置到对象的实例”问题可能原因如下: 1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就...
1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就应用变量。 5、未用new初始化对象。...10、重复定义造成未将对象引用设置到对象的实例错误.