【发布时间】:2011-11-12 07:21:10
【问题描述】:
我在尝试设置 @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 上运行。
谢谢。
【问题讨论】:
-
这里的任何解决方案都有效吗?
标签: xml spring spring-mvc jaxb