【发布时间】:2014-12-25 21:59:39
【问题描述】:
我现在已经尝试了很多东西,并为这个问题查找了很多地方。
我正在尝试使用 Spring MVC 3.0 进行 Rest Web 服务调用,以获取 JSON 和 XML 形式的数据。目前据我了解,当类路径中存在杰克逊核心和映射器 jar 时,Spring 会自动将响应转换为 jSon,这很好。这在项目中按预期工作。
我正在努力的是生成一个 xml 响应。我不确定我必须为此做些什么。我尝试了各种方法来设置生成 xml 响应的方法。据我了解,jdk 6 及更高版本具有 JAXB 实现。因此,当我使用 XML 注释对我的 POJO 进行注释以生成 XML 时,它应该给我一个 XML 响应。但由于某种原因,它一直给我 JSON 响应。有任何想法吗?以下是我的 POJO,它具有 XMLRootElement jaxb 注释。
package my.dto;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "mydto")
public class MyDTO {
String name;
Long quantity;
String type;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
@XmlElement
public void setType(String type) {
this.type = type;
}
public Long getQuantity() {
return quantity;
}
@XmlElement
public void setQuantity(Long quantity) {
this.quantity = quantity;
}
public MyDTO(String name, Long quantity) {
this.name = name;
this.quantity = quantity;
}
public MyDTO() {
super();
}
}
**My Controller:**
package my.package;
import java.util.ArrayList;
import java.util.List;
import my.dto.MyDTO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Controller
@RequestMapping("/spring")
public class MyController {
@RequestMapping(value="{b}", method = RequestMethod.GET)
@Produces("application/xml")
public @ResponseBody List<MyDTO> getMyList(@PathVariable String b) {
MyDTO m1 = new MyDTO("My 1", Long.valueOf(100));
MyDTO m2 = new MyDTO("My 2", Long.valueOf(200));
List<MyDTO> list = new ArrayList<MyDTO>();
list.add(m1);
list.add(m2);
return list;
}
}
【问题讨论】:
标签: xml json spring spring-mvc jaxb