2012-04-09 1 views
1

Mit dieser Methode:JAXB und @XmlType propOrder Attribut

public Boolean isCorrect() { 
    return correct; 
} 

Ich kann nicht schreiben:

@XmlType(propOrder = {"id", "description", "correct"}) 

, weil es scheint, wie es, dass abhängig von den Zugriffsmethoden get.. benannt ist. Ist es möglich, stattdessen is.. zu verwenden?

Antwort

6

Sie könnte erstellen Sie einen Typ Adapter oder ändern Sie die Art und Weise JAXB ruft Variablen für Marshalling wie in den anderen Antworten vorgeschlagen, aber das Problem hier ist Ihre Boolean Rückgabetyp.

Die Java Beans nur spec ermöglicht eine get-Methode namens is<propertyName> wenn der Rückgabetyp primitiv ist boolean, sonst sollte es die übliche Konvention von get<propertyName> folgen.

Dieses:

public boolean isCorrect() { 
    return correct; 
} 

oder:

public Boolean isCorrect() { 
    return correct; 
} 

sollte geändert werden

public Boolean getCorrect() { 
    return correct; 
} 

sonst können Sie andere Probleme mit Bibliotheken auftreten, die Getter/Setter verwenden Variablen zu entdecken auf deinen POJOs.

2

Sie können die Annotation @XmlAccessorType(XmlAccessType.FIELD) für Ihre Klasse verwenden, damit JAXB sich nicht um Ihre Getter/Setter-Signaturen kümmert.

+0

Anstatt dies zu tun, würde ich empfehlen, dass die OP ihre Getter/Setter benennen, um JavaBeans Konventionen zu folgen, siehe meine Antwort. – darrengorman