У меня проблема с попыткой настроить @ResponseBody для возврата коллекции. У меня есть JAXB-файлы в пути к классам, и я не настроил никакой 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, если это имеет значение.
Спасибо.