2016-12-16 55 views
1

当我尝试使用来自@org.springframework.web.bind.annotation.RestController的基于'javax.xml.bind.annotation'的类时,I 请勿请参阅响应中显示的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的那些:

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的转换器。

+0

这个工程!非常感谢。 – ZeroGraviti