Для класса ответа ArrayList не найдено ни одного автора тела сообщения
В то время как я пытаюсь вернуть List, его метание. Для класса ответа ArrayList не найдено ни одного автора тела сообщения.
У меня есть код следующим образом:
@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);
}
Пожалуйста, помогите мне. Спасибо заранее
Ответы
Ответ 1
Чтобы вернуть список, лучше вложить его в контейнер, аннотированный @XmlRootElement
, и предоставить этому контейнеру ваш список в виде поля, аннотированный как @XmlElement
.
Так же:
@XmlRootElement
public class Container {
@XmlElement
public List yourlist;
}
Ответ 2
См. этот, его JAXB, который дает вам проблемы, он не знает, как отменить/перечислить список.
Ответ 3
Чтобы избежать обертывания, можно использовать Джексона.
О том, как это сделать, вы можете выполнить мой ответ для аналогичного вопроса.
Ответ 4
Я решил это с помощью JacksonJaxbJsonProvider. Код Java не должен изменяться. Всего несколько изменений в Spring context.xml
и Maven pom.xml
, см. fooobar.com/questions/123149/...
Ответ 5
Я добавил список к существующему объекту области проекта домена.
Он был более контекстуальным для проекта и также работал из коробки: не нужно было тестировать XmlRootElement, но добавить тестовые данные + логику для списка существующих тестовых примеров для этого объекта.
Ответ 6
Попробуйте использовать GenericEntity.
Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build();