Ich habe die folgende Klasse:BeanUtils.copyProperties ignorieren Nullwerte
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...
}
Es ist eine Bohne mit der Fähigkeit zu/von XML mit XStream zu serialisiert und deserialisiert.
Ich habe auch einen Nicht-Args-Konstruktor hinzugefügt, der something
initialisiert, um Nullzeigerfehler zu vermeiden - die Bean ist tatsächlich viel komplexer, und ich möchte nicht überprüfen "ist something != null
?" eine Million Mal.
Das Problem tritt auf, wenn ich den XML-Konstruktor verwende. Lets sagen, dass ich das folgende XML haben:
<myBean>
<name>John</name>
</myBean>
Dies ist, was würde ich den Konstruktor gerne tun:
name: "John";
something: new Something();
Da es jedoch kein <something>
Element in der XML ist, BeanUtils.copyProperties Marken something = null;
, also das, was ich bekommen ist:
name: "John"
something: null
Wie kann ich beanFromXML
‚s Eigenschaften in this
kopieren ... aber ignorieren die nul l Eigenschaften, anstatt sie zu überschreiben?
Ich werde es versuchen (aber es wird bis nächsten Montag warten müssen: D). Da die Initialisierung zweimal stattfindet, ist das kein Problem, aber es muss leicht zu lösen sein. Vielen Dank!!! :) – AJPerez
Großartig, es funktioniert jetzt. Danke nochmal für deine Hilfe! :) – AJPerez