Ich habe eine Reihe von JAXB Beans, die direkt mit Jersey marshalled und unmarshaled werden.JAXB Collections (Liste <T>) Verwenden Sie Pascal Case anstelle von Camel Case für Elementnamen
z.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Artifact", propOrder = {
"artifactId",
"artifactType",
"contentHash"
})
@XmlSeeAlso({
EmailArtifact.class,
ManagedDocArtifact.class
})
@XmlRootElement(name ="Artifact")
public class Artifact {
protected String artifactId;
protected String artifactType;
protected String contentHash;
...
...
...
}
Wenn ich eine GET-Methode erstellen, die ein einzelnes Artefaktobjekt zurückgibt. Es produziert korrekt die XML:
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
Hier habe ich in der Lage gewesen, den Namen des Artifact Element erfolgreich zu steuern, zu Beginn ein großes „A“ zu haben.
Allerdings habe ich eine GET-Methode erstellen, die Sammlung von Artefakt-Objekten zurückgibt, ich am Ende mit:
<artifacts>
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
</artifacts>
Wie Sie das äußere Element sehen für die Sammlung einen Kleinbuchstaben „A“ hat. Um unserem eigenen internen Standard zu entsprechen, möchte ich, dass dies ein großes "A" - Artefakt ist.
Ich kann nicht sehen, wo dies in JAXB definiert werden kann, ist es tatsächlich das Jersey-Framework, das dies steuert?
Können wir den für Sammlungen generierten Elementnamen kontrollieren?
Vielen Dank,
James
1. AFAIK JAXB ermöglicht es Ihnen nicht, eine Sammlung zu marshall (zum Beispiel '' Arraylist) als solche. Aber es ermöglicht Ihnen, ein Objekt zu serialisieren, das eine Sammlung als Eigenschaft besitzt. 2.Ich bin mit Jersey nicht vertraut, aber ich denke, Sie müssen wissen, ob es JAXB ist, die jedes Artefakt separat serialisiert und eine andere Schicht (Jersey) das gesamte Dokument der Stücke erstellt oder ist es JAXB, das XML für die Sammlung produziert. 3. Konnten Sie etwas Code veröffentlichen (oder irgendwo veröffentlichen) - wie man es nennt? Ich habe es mit einem einfachen JAXB versucht, aber das entspricht nicht deinem Setup. –
Ich vermute, dass Sie Recht haben - es ist Jersey, das mir erlaubt, die Sammlung von JAXB Beans Marshall/Marshall/Marshall/Marshall/Marshall/Marshall/Marshall/Marshall/Marshalls (ich habe dies mit der Jersey-Benutzergruppe auch angesprochen). Daher hoffe ich, dass es eine Konfiguration gibt, die es mir erlaubt, den Namen oder die Regeln hinter dem XML-Elementnamen für Sammlungen festzulegen ... Wir werden abwarten. Wie Sie darauf hinweisen, besteht eine Umgehungslösung darin, eine neue JAXB-Bean zu erstellen - sagen wir "Artifacts", die ein einzelnes Auflistungselement aufweist, z. Liste Artefakte - dies fühle ich, obwohl eine ganze Reihe von Klassen eingeführt, die nicht viel Wert hinzufügen. Danke für die Hilfe. James –
jallch