Frage

Ich schreibe eine Server-Anwendung und Resteasy habe Probleme bekommen mein Super Marschall. Ich habe Code so etwas wie folgt aus:

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "person")
class Person {
  protected String name;

  @XmlElement(name = "name")
  public String getName() { return name; }

  public void setName(String name) { this.name = name; }
}

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "employee")
class Employee extends Person {
  protected Integer id;

  @XmlElement(name = "id")
  public Integer getId() { return id; }

  public void setId(Integer id) { this.id = id; }
}

Als ich die Klasse Employee XML Marschall, bekomme ich so etwas wie folgt aus:

<employee>
  <id>12345</id>
</employee>

ohne Ausgabe des Namensfeldes geerbt aus der Klasse Person.

Was mache ich falsch?

Danke, Ralph

War es hilfreich?

Lösung

Ich bin nicht sicher, wie Sie den JAXB Kontext oder Einweiser gerade konfigurieren, aber das folgende: -

public static void main(String[] args) throws Exception
{

        Employee employee = new Employee();
        employee.setId(1);
        employee.setName("Ralph");

        JAXBContext context = JAXBContext.newInstance(Employee.class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(employee, System.out);

}

gibt: -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
    <name>Ralph</name>
    <id>1</id>
</employee>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top