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


      

Odpovedet emailem