我试图设置@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; }
我真正想要的是返回一个对象列表.阅读后,似乎这样做的方法是将列表放在地图中并返回地图:
@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不可接受”.
我在这里做错了什么如果这样做有所作为,我正在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>