2016-10-09 9 views
1

私は春4.xを使用していると私は春RestControllerは

@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クラスは次のようになりますすべてのフライト(rootElement =飛行のリストを返すべきRestController方法を以下しているラッパークラスでのXmlElement注釈を無視します

要素=飛行は):私はそれがこの形式のXMLを返します)(returnAllFlightsを呼び出すとき

@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; 
    } 
} 

問題があります

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

210私は、単一の飛行は、リスト内の項目のリスト自体と同じタグを持つを見ることができるよう便しかしあるべきタグ飛行とフライトの全リストを持っている必要があることを期待しました。

どのように修正するのですか?

+0

コードをきれいにして再構築すると、これまでのプロジェクトとほとんど変わりません。 OXMやMarshaller技術の設定を追加できますか?あなたのコントローラは '@ RestController'ですか? –

+0

はい私のコントローラは@RestControllerです。私はスプリングブート1.4.1を使用しています。 xmlサポートのために、私はmaven jackson-dataformat-xmlに依存関係を追加しました。 –

答えて

3

jackson-dataformat-xmlモジュールを使用しているので、コメントによれば、JAXBアノテーションは現在無視されています。これらのアノテーションを使用するには、クラスを更新する必要があります。

@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; 
    } 
} 

私はあなたと同じ問題を抱えていたが、Spring Framework通じ、ないSpring Bootて。しかし、その動作は、jackson-dataformat-xmlモジュールがクラスパスに追加されたときに発生します。それは私の経験によるものです。

関連する問題