Spring MVC 4 响应主体序列化适用于 JSON 但不适用于 XML

标签 spring spring-mvc

我正在使用 Spring 4 设置 REST API。HTTP 消息转换器默认用于 JSON 和 XML。我尝试设置两个端点,一个用于返回 JSON,另一个用于返回 XML。 JSON 对象似乎按预期返回,但是当我尝试访问 xml 时,我以 406 异常结束,

The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.

我已经包含了 JSON 和 XML 的 Maven 依赖项。下面是 pom.xml 的片段,

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency> 

<dependency>
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>${jaxb-api.version}</version> 
</dependency>

下面是 Controller 代码,

@RestController
@RequestMapping(value="/employee")
public class HelloController {

@RequestMapping(method=RequestMethod.GET , produces="application/json",value="/hello.json")
public List<Employee> getEmployeeJson(){

    Employee emp = new Employee();
    emp.setId(1);
    emp.setName("x");

    Employee emp1 = new Employee();
    emp1.setId(2);
    emp1.setName("y");

    List<Employee> res = new ArrayList<Employee>();
    res.add(emp);
    res.add(emp1);

    return res;
}

@RequestMapping(method=RequestMethod.GET , produces="application/xml",value="/hello.xml")
public List<Employee> getEmployeeXml(){

    Employee emp = new Employee();
    emp.setId(1);
    emp.setName("x");

    Employee emp1 = new Employee();
    emp1.setId(2);
    emp1.setName("y");

    List<Employee> res = new ArrayList<Employee>();
    res.add(emp);
    res.add(emp1);

    return res;
}

}

请分享您对此处遗漏的想法

最佳答案

根据documentation您应该添加 jackson-dataformat-xml 依赖项以启用响应主体 XML 序列化。如果您使用的是 Maven,只需添加:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

关于Spring MVC 4 响应主体序列化适用于 JSON 但不适用于 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871709/

相关文章:

java - 在 Spring 中的存储过程中传递参数

java - Controller 内部未接收到参数

java - Spring ClassPathXmlApplicationContext 空指针异常

spring - 为什么在 Scala 2.9.x 中编译为桥接方法而不是在 2.8.x 中的特征中的具体函数实现?

java - Swagger 递归地解决类型的依赖关系(无限循环)

Spring Boot Hibernate 无法反序列化 : invalid stream header: 3433302E

java - Spring MVC JavaConfig webapp中的"error-page"配置? (没有 web.xml)

json - Spring MVC 中 Json 响应的后处理

java - Spring MVC + hibernate

java - Spring MVC - 如何检查没有传递意外的查询字符串参数?