我有下面的类:BeanUtils.copyProperties忽略空值
import org.apache.commons.beanutils.BeanUtils;
import com.thoughtworks.xstream.XStream;
...
public class MyBean {
protected static final XStream XSTREAM = new XStream(new DomDriver());
protected String name;
protected Something something;
public MyBean() {
something = new Something();
}
public MyBean(String xml) {
this();
MyBean beanFromXML = (MyBean) XSTREAM.fromXML(new StringReader(xml));
BeanUtils.copyProperties(this, beanFromXML);
}
public String toString() {
return XSTREAM.toXML(this);
}
// Getters and setters...
}
这是一个与序列化和使用的XStream从XML反序列化/能力的bean。
我还添加了非参数的构造函数初始化something
,避免空指针错误 - 豆实际上是一个复杂得多,我不希望被检查“是something != null
?”一百万次。
当我使用XML构造函数时出现问题。比方说,我有以下XML:
<myBean>
<name>John</name>
</myBean>
这是我想的构造做:
name: "John";
something: new Something();
但是,由于是在XML没有<something>
元素,BeanUtils.copyProperties品牌something = null;
,所以我得到的是:
name: "John"
something: null
我如何复制beanFromXML
的属性为this
...但忽略NUL l属性而不是覆盖它们?
我会试一试(但它将不得不等待下个星期一:D)。至于初始化发生两次,这不是问题,但无论如何它必须很容易解决。谢谢!!! :) – AJPerez 2010-12-10 16:02:49
太棒了,现在正在工作。再次感谢你的帮助! :) – AJPerez 2010-12-13 07:44:28