【发布时间】:2013-09-26 01:52:15
【问题描述】:
我试图在春季以 XML 形式返回一个对象,就像本指南一样:http://spring.io/guides/gs/rest-service/
除了我希望对象返回为 xml 而不是 JSON。
有人知道我该怎么做吗? Spring 是否有任何依赖项可以轻松地为 XML 做到这一点?或者,我是否需要使用编组器,然后以其他方式返回 xml 文件?
【问题讨论】:
我试图在春季以 XML 形式返回一个对象,就像本指南一样:http://spring.io/guides/gs/rest-service/
除了我希望对象返回为 xml 而不是 JSON。
有人知道我该怎么做吗? Spring 是否有任何依赖项可以轻松地为 XML 做到这一点?或者,我是否需要使用编组器,然后以其他方式返回 xml 文件?
【问题讨论】:
Spring 默认支持 JSON,但要支持 XML,请执行以下步骤 -
@XmlRootElement(name = "response")
@XmlAccessorType(XmlAccessType.FIELD) => this is important, don't miss it.
public class Response {
@XmlElement
private Long status;
@XmlElement
private String error;
public Long getStatus() {
return status;
}
public void setStatus(Long status) {
this.status = status;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}, produces = {"application/xml", "application/json"})
公开
public Response produceMessage(@PathVariable String topic, @RequestBody String message) {
return new Response();
}
【讨论】:
如果您在 bean 中使用 JAXB 注释来定义 @XmlRootElement 和 @XmlElement,那么它应该将其编组为 xml。 Spring 会在看到时将 bean 编组为 xml:
关注此示例以了解更多信息:
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/
【讨论】:
HttpMessageConverter 设置,则 @ResponseBody 本身是不够的。基本上,Spring 将使用它找到的第一个可以执行转换的。一个安全的方法是用MediaType.APPLICATION_XML返回ResponseEntity