Tôi gặp sự cố khi cố gắng thiết lập @ResponseBody để trả lại bộ sưu tập. Tôi có JAXB lọ trong classpath và tôi đã không thiết lập bất kỳ ContentNegotiatingViewResolver.Spring MVC @ResponseBody trả về Bản đồ sản xuất "Lỗi 406 KHÔNG CHẤP NHẬN"
Đây là đối tượng đơn giản của tôi: -
@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;
}
}
Tôi đã viết một bài kiểm tra đơn giản mà trả về một đối tượng duy nhất ... làm việc này mà không có vấn đề, và tôi có thể nhìn thấy XML được tạo ra: -
@RequestMapping(value = "one", method = RequestMethod.GET)
public @ResponseBody TestObject getSingleObject() {
TestObject obj = new TestObject();
obj.setId(1);
return obj;
}
Điều tôi thực sự muốn là trả về danh sách các đối tượng. Sau khi đọc lại, nó có vẻ như cách làm như vậy là đặt danh sách trong một bản đồ và trở về bản đồ: -
@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);
}
Khi tôi thực hiện ở trên, tôi nhận được "Lỗi 406 Not Acceptable".
Tôi đã làm gì sai ở đây? Tôi đang chạy trên Jetty 6.1 nếu điều đó tạo nên sự khác biệt.
Cảm ơn.
có bất kỳ giải pháp nào ở đây hoạt động không? – Ram