2016-10-09 3 views
1

I Frühling 4.x bin mit und ich habe folgende RestController Methode, die Liste aller FlügeFrühling RestController XmlElement Anmerkung in Wrapper-Klasse ignorieren

@RequestMapping(produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}, method = RequestMethod.GET) 
public FlightWrapper returnAllFlights() { 
    List<FlightDto> flights = data.findAll(); 

    return new FlightWrapper(flights); 
} 

FlightWrapper Klasse sieht wie folgt aus (rootElement = Flug s zurückkehren sollte element = Flug):

@XmlRootElement(name = "flights") 
public class FlightWrapper { 

    private List<FlightDto> flights; 

    public FlightWrapper() {} 

    public FlightWrapper(List<FlightDto> flights) { 
     this.flights = flights; 
    } 

    @XmlElement(name = "flight") 
    public List<FlightDto> getFlights() { 
     return flights; 
    } 

    public void setFlights(List<FlightDto> flights) { 
     this.flights = flights; 
    } 
} 

Das Problem ist, wenn ich returnAllFlights() aufrufen, es xml in diesem Format zurück:

<FlightWrapper> 
    <flights> 
     <flights> 
      .... 
     </flights> 
     <flights> 
      .... 
     </flights> 
    </flights> 
</FlightWrapper> 

erwartete ich, dass einzelner Flug Flug und ganze Liste von Flügen jedoch hat Tag Flüge sollten sein sollte, wie Sie Objekte in der Liste sehen können, den gleichen Tag wie die Liste selbst haben.

Irgendeine Idee, wie man es repariert?

+0

Reinigen und neu erstellen Sie Ihren Code, es ist praktisch fast das gleiche wie ein früheres Projekt, das ich hatte. Könnten Sie die OXM- oder Marshaller-Technologiekonfiguration hinzufügen? Dein Controller ist '@ RestController'? –

+0

Ja mein Controller ist @RestController Ich benutze Spring Boot 1.4.1. Für die XML-Unterstützung habe ich gerade die Abhängigkeit zu maven jackson-dataformat-xml hinzugefügt –

Antwort

3

Gemäß Ihren Kommentaren, seit Sie das jackson-dataformat-xml Modul verwenden, werden die JAXB Anmerkungen jetzt ignoriert. Sie müssen Ihre Klasse aktualisieren, um diese Anmerkungen zu verwenden.

@JacksonXmlRootElement(localName="flights") 
public class FlightWrapper { 

    private List<FlightDto> flights; 

    public FlightWrapper() {} 

    public FlightWrapper(List<FlightDto> flights) { 
     this.flights = flights; 
    } 

    @JacksonXmlElementWrapper(useWrapping=false) 
    @JacksonXmlProperty(localName="flight")   
    public List<FlightDto> getFlights() { 
     return flights; 
    } 

    public void setFlights(List<FlightDto> flights) { 
     this.flights = flights; 
    } 
} 

hatte ich das gleiche Problem, als Sie aber durch Spring Framework, nicht durch Spring Boot. Dieses Verhalten tritt jedoch auf, wenn das Modul jackson-dataformat-xml dem Klassenpfad hinzugefügt wird. Es entspricht meiner Erfahrung.

Verwandte Themen