2016-12-16 3 views
1

Когда я пытаюсь использовать класс на основе javax.xml.bind.annotation из @org.springframework.web.bind.annotation.RestController, I не см. Значение в атрибуте name, отображающемся в ответе. Я использую как @org.springframework.web.bind.annotation.RequestBody, так и @org.springframework.web.bind.annotation.ResponseBody в моем RestController.Как переопределить @XmlRootElement с пользовательским именем?

например, класс Foo имеет аннотацию @javax.xml.bind.annotation.XmlRootElement(name="foo").

То, что я получаю, это <Foo>, а не <foo>. Это то, чего я пытаюсь достичь.

Может кто-нибудь, пожалуйста, помогите мне?

TIA.

+0

Какой конвертер сообщений вы используете для XML-контента? Пожалуйста, предоставьте конфигурацию вашего весеннего mvc. – jlumietu

+0

'MappingJackson2XmlHttpMessageConverter' - это то, что я думаю использовать. На данный момент у меня нет конвертеров сообщений. Есть ли специальный «SerializationFeature», который я должен использовать для этого конвертера сообщений в моем приложении SpringCoot 1.4.1 RestController? У меня есть «jackson-dataformat-xml» как зависимость pom в моем проекте. – ZeroGraviti

ответ

1

Если вы не везло еще, попробуйте использовать Джексон XML аннотаций вместо них в JAXB:

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

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

Вы должны иметь эту аннотацию доступный как он упакован в jackson-dataformat-xml зависимости, вы заявили, уже были включены в проект ,

Если вы предпочитаете использовать аннотации JAXB, вы должны настроить spring-mvc, чтобы использовать org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter в качестве конвертера XML-сообщений вместо Jackson's one.

+0

Это работает! Спасибо. – ZeroGraviti