2012-02-16 18 views
10

Trong khi tôi đang cố gắng trả về Danh sách ném Không có người viết thư nào được tìm thấy cho lớp phản hồi ArrayList.Không tìm thấy người viết thư cho lớp phản hồi ArrayList

tôi có mã như sau:

@POST 
@Path("/{scope}/{application}/tables") 
@Produces("application/xml") 
public List<String> getTableNames(@PathParam("scope") String scope, 
    @PathParam("application") String application, Request request) { 

    // For example, I am returning a list of String 
    return new ArrayList<String>(4); 
} 

Xin hãy giúp tôi. Cảm ơn trước

Trả lời

19

Để trả lại danh sách, hãy bọc tốt nhất danh sách đó vào vùng chứa có chú thích @XmlRootElement và đặt vùng chứa đó làm danh sách của bạn dưới dạng trường, được chú thích là @XmlElement.

Giống như vậy:

@XmlRootElement 
public class Container { 
    @XmlElement 
    public List yourlist; 
} 
+2

Và đảm bảo rằng 'Vùng chứa' có hàm tạo mặc định, không có args :) – vikingsteve

3

Xem this, JAXB của nó mang lại cho bạn các vấn đề, nó không biết cách sắp xếp/sắp xếp một danh sách.

-1

Hãy thử sử dụng GenericEntity.

Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build(); 
0

Để tránh gói, người ta có thể sử dụng Jackson. Cách thực hiện, bạn có thể theo dõi answer của tôi cho một câu hỏi tương tự.

+1

Bạn cần cấu hình đó nếu bạn định trả về phản hồi dưới dạng JSON. Trong thực tế, nếu bạn nhìn vào câu trả lời này cho câu hỏi này (http://stackoverflow.com/questions/24653329/jaxrs-client-cont-find-message-body-writer/25536584#25536584), bạn sẽ nhận thấy rằng cấu hình đơn giản như thế này sẽ làm việc. Nhưng anh ta muốn một XML như một phản ứng. – saibharath

0

Tôi đã thêm Danh sách vào đối tượng hiện tại của phạm vi dự án của lớp miền.

Đó là ngữ cảnh cho dự án và cũng làm việc ngoài hộp: không cần thiết để kiểm tra XmlRootElement, nhưng thêm dữ liệu thử nghiệm + logic cho Danh sách trường hợp thử nghiệm hiện có cho đối tượng đó.

Các vấn đề liên quan