xml - Spring MVC @ResponseBody 返回一个 Map 产生 "Error 406 NOT ACCEPTABLE"

标签 xml spring spring-mvc jaxb

我在尝试设置 @ResponseBody 以返回集合时遇到问题。我在类路径中有 JAXB jar,但我没有设置任何 ContentNegotiatingViewResolver。

这是我的简单对象:-

@XmlRootElement(name = "test-object")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestObject implements Serializable {

    @XmlAttribute
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

我编写了一个返回单个对象的简单测试......这没有问题,我能够看到生成的 XML:-

@RequestMapping(value = "one", method = RequestMethod.GET)
public @ResponseBody TestObject getSingleObject() {
    TestObject obj = new TestObject();
    obj.setId(1);

    return obj;
}

我真正想要的是返回一个对象列表。阅读后,似乎这样做的方法是将列表放在 map 中并返回 map :-

@RequestMapping(value = "all", method = RequestMethod.GET)
public @ResponseBody Map<String, ? extends Object> getAllObjects() {
    TestObject obj1 = new TestObject();
    obj1.setId(1);

    TestObject obj2 = new TestObject();
    obj2.setId(2);

    List<TestObject> list = Arrays.asList(obj1, obj2);

    return Collections.singletonMap("all-objects", list);
}

当我执行上述操作时,我收到“错误 406 Not Acceptable ”。

我在这里做错了什么?如果有什么不同,我会在 Jetty 6.1 上运行。

谢谢。

最佳答案

需要在 pom.xml 中添加这两个依赖!

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-lgpl</artifactId>
    <version>1.8.1</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-lgpl</artifactId>
    <version>1.8.1</version>
</dependency>

关于xml - Spring MVC @ResponseBody 返回一个 Map 产生 "Error 406 NOT ACCEPTABLE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336875/

相关文章:

java - 检查 XPath 版本

java - 我将通过使用友元操作检索friendMemberList,但我总是有列表的最后一个成员?

java - 如何修复 ' org.hibernate.TransientPropertyValueException'?

java - 为什么 Spring 将实例初始化为单例?有哪些原因影响了他们决定以这种方式处理初始化?

java - Spring RestTemplate反序列化xml为对象返回null

java - 使用 Redis 的 Spring 启动 session 中出现错误 - 没有 [...SessionRepository] ​​类型的合格 bean

xml - 在 XSL 转换中为命名空间使用变量

java - 递归解析XML文件jdom

java - android从类似于用于字符串的方法的微调器中获取一个整数

如果 RabbitMQ 关闭,Spring Integration RabbitMQ ConnectionFactory 会优雅地停止重试