如何使用自定义名称覆盖@XmlRootElement?

时间:2016-12-16 20:48:54

标签: spring spring-mvc spring-boot jaxb spring-restcontroller

当我尝试使用来自@org.springframework.web.bind.annotation.RestController的'javax.xml.bind.annotation'类时,我会看到显示name属性中的值在回应中。我在RestController中使用了@org.springframework.web.bind.annotation.RequestBody@org.springframework.web.bind.annotation.ResponseBody

例如,课程Foo的注释为@javax.xml.bind.annotation.XmlRootElement(name="foo")

我得到的是<Foo>而不是<foo>。后者是我想要实现的目标。

有人可以帮帮我吗?

TIA。

1 个答案:

答案 0 :(得分:1)

如果您还没有运气,请尝试使用Jackson 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的消息转换器。