У меня есть следующий класс: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...
}
Это боб с возможностью сериализации и десериализации в/из XML с помощью XStream.
Я также добавил конструктор non-args, который инициализирует something
, чтобы избежать ошибок с нулевым указателем. Боб на самом деле намного сложнее, и я не хочу проверять «something != null
?». миллион раз.
Проблема возникает, когда я использую XML-конструктор. Допустим, я имею следующий XML:
<myBean>
<name>John</name>
</myBean>
Это то, что я хотел бы конструктор, чтобы сделать:
name: "John";
something: new Something();
Однако, так как нет <something>
элемент в XML, BeanUtils.copyProperties марки something = null;
, таким образом, что я получаю:
name: "John"
something: null
Как скопировать beanFromXML
«s свойств в this
... но игнорируя NUL l вместо их перезаписи?
Я попробую (но он будет ждать до следующего понедельника: D). Что касается инициализации, происходящей дважды, это не проблема, но в любом случае ее довольно легко решить. Благодаря!!! :) – AJPerez 2010-12-10 16:02:49