2016-12-16 8 views
1

@org.springframework.web.bind.annotation.RestControllerから 'javax.xml.bind.annotation'ベースのクラスを使用しようとすると、のレスポンスに表示されるname属性の値が表示されません。私はRestControllerで@org.springframework.web.bind.annotation.RequestBody@org.springframework.web.bind.annotation.ResponseBodyの両方を使用しています。@XmlRootElementをカスタム名でオーバーライドする方法は?

たとえば、クラスFooは、@javax.xml.bind.annotation.XmlRootElement(name="foo")の注釈を持っています。

返信は<Foo>で、<foo>ではありません。後者は私が達成しようとしているものです。

誰かお手伝いできますか?

TIA。あなたはまだ運がなかった場合は

+0

XMLコンテンツタイプにはどのメッセージコンバータを使用していますか?あなたのspring mvcの設定を提供してください。 – jlumietu

+0

'MappingJackson2XmlHttpMessageConverter'は私が使うべきものです。私は現在、メッセージコンバータを設定していません。 SpringBoot 1.4.1 RestControllerアプリケーション内でこのメッセージコンバータ用に使用すべき特定の 'SerializationFeature'がありますか?私は 'jackson-dataformat-xml'を自分のプロジェクトにpom依存関係として持っています。 – ZeroGraviti

答えて

1

、ジャクソンのXML注釈の代わりに、JAXBのものを使用してみてください:それはあなたがすでにあなたのプロジェクトに含まれていた述べたjackson-dataformat-xml依存関係にパッケージ化されているとしてあなたが利用できるこの注釈を持っている必要があり

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement 

@JacksonXmlRootElement(localName="foo") 
public class Foo{ 
... 
} 

JAXB注釈を使用する場合は、spring-mvcを、org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverterをジャクソンの代わりにXMLメッセージコンバータとして使用するように設定する必要があります。

+0

これは動作します!本当にありがとう。 – ZeroGraviti

関連する問題