Im sử dụng Jersey để xây dựng một Dịch vụ REST và muốn trả lại một Collection<String>
làm XML.Một trình soạn thảo nội dung thư cho lớp Java java.util.ArrayList ... và kiểu văn bản MIME text/xml không được tìm thấy
@GET
@Produces(MediaType.TEXT_XML)
@Path("/directgroups")
public Response getDirectGroupsForUser(@PathParam("userId") String userId) {
try {
Collection<String> result = service.getDirectGroupsForUser(userId, null, true);
// return result; //first try
// return result.toArray(new String[0]); //second try
return Response.ok().type(MediaType.TEXT_XML).entity(result).build(); //third try
} catch (UserServiceException e) {
LOGGER.error(e);
throw new RuntimeException(e.getMessage());
}
}
nhưng những nỗ lực của tôi thất bại với các ngoại lệ sau đây:
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: Một nhà văn nội dung thư cho Java lớp java.util .ArrayList và lớp Java loại java.util.ArrayList và loại văn bản MIME text/xml không được tìm thấy
và tất cả kết quả cho ngoại lệ mà tôi tìm thấy qua google xử lý văn bản trả về/json thay vì văn bản/xml như trong tình huống của tôi.
Có ai có thể giúp tôi không? Tôi nghĩ, nếu tôi sử dụng một Response, đó sẽ là yếu tố tôi gốc trong XML và bộ sưu tập của tôi một danh sách các yếu tố chuỗi trong nó ..
Có còn cách nào khác? Tôi nghĩ Response sẽ thực hiện công việc cho những gì bạn đã tạo ra nhóm Groups.-> cung cấp một container cho danh sách một hành động như là phần tử gốc – lrxw
Tối thiểu, một cái gì đó cần phải cho Jersey biết tên của phần tử XML gốc. Có vẻ như bạn có thể sử dụng [trình bao bọc chung và JAXB] (http://stackoverflow.com/a/1603484/1818625) hoặc [thư viện XStream] (http://stackoverflow.com/a/8427694/1818625). –
http://stackoverflow.com/questions/17342218/getting-error-a-message-body-writer-for-java-class-java-util-arraylist-listjava ..có thể bạn giải quyết vấn đề này không ?? – user2416728