JAXB, XMLAdapter a primitivny typ
Radovana Straube
radovana_straube na yahoo.com
Úterý Duben 21 12:47:50 CEST 2009
A hned si aj odpoviem: staci presunut deklaraciu adapteru na uroven packagu.
--- On Tue, 4/21/09, Radovana Straube <radovana_straube na yahoo.com> wrote:
> From: Radovana Straube <radovana_straube na yahoo.com>
> Subject: JAXB, XMLAdapter a primitivny typ
> To: konference na java.cz
> Date: Tuesday, April 21, 2009, 12:02 PM
> Dobry den,
>
> mam XML-data s elementami typu:
> <odpoved1>j</odpoved1>
> <odpoved2>j</odpoved2>
> j = ano (Ja)
> n = nie (Nein)
> a potrebujem pouzit unmarshalling, ktory mi tieto stringy
> prevedie na booleany. XmlAdapter som uz parkrat uspesne
> pouzila pri konvertovani stringov na stringy, ale konverziu
> boolean-string neviem rozchodit (autoboxing by mal snad
> fungovat).
>
> public class BooleanAdapter extends XmlAdapter<String,
> Boolean> {
>
> @Override
> public Boolean unmarshal(String _sValue) {
> boolean value = BooleanType.YES.equals(_sValue);
> return new Boolean(value);
> }
>
> @Override
> public String marshal(Boolean _value){
> if (_value) {
> return BooleanType.YES.value;
> } else {
> return BooleanType.NO.value;
> }
> }
> }
>
>
> @XmlRootElement
> @XmlAccessorType(XmlAccessType.FIELD)
> public class Zeichen {
>
> @XmlJavaTypeAdapter(BooleanAdapter.class)
> @XmlElement(name="faeulnis")
> private boolean faeulnis;
>
> public boolean isFaeulnis() {
> return faeulnis;
> }
>
> public void setFaeulnis(boolean faeulnis) {
> this.faeulnis = faeulnis;
> }
> ....
>
> Pri spusteni dostanem nasledovnu chybu:
> com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1
> counts of IllegalAnnotationExceptions
> Adapter
> de.bolsys.stala.mortality.data.model.adapter.BooleanAdapter
> is not applicable to the field type boolean.
> this problem is related to the following location:
> at
> @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(type=class
> javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT,
> value=class
> de.bolsys.stala.mortality.data.model.adapter.BooleanAdapter)
> at private boolean
> de.bolsys.stala.mortality.data.model.Zeichen.faeulnis
>
> Nasla som na Internete, ze aj primitivne typy by mali
> fungovat ale popisane riesenie mi bohuzial nefungovalo.
> Vedel by mi prosim nieto poradit ako na to?
>
> Dakujem
> Radovana Straube
Další informace o konferenci Konference