Реализация Arraylist - PullRequest
       1

Реализация Arraylist

0 голосов
/ 20 ноября 2011

У меня есть класс Researcher и ArrayList с именем researchcherList, который содержит список исследователей.
Я хочу получить информацию всех исследователей из базы данных и поместить ее в созданный мной список исследователей ArrayList и мой ответ клиенту.будет список исследователей.Я написал код ниже, пожалуйста, попробуйте увидеть код и найти ошибку.Это не работает.Это создает исключение.Вот исключение

SEVERE: A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/xml, was not found
SEVERE: Mapped exception to response: 500 (Internal Server Error) javax.ws.rs.WebApplicationException

@GET
@Path("/researcher/all")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getAllResearchers() {

    //TODO return proper representation object

    Researcher res = new Researcher();
    List<Researcher> researcherList = new ArrayList<Researcher>();
    try {
        ResultSet resList = researcher.getAllResearcher();

        while (resList.next()) {
            res.setId(resList.getInt("id"));
            res.setResearcherName(resList.getString("name"));
            res.setAge(resList.getInt("age"));
            res.setSex(resList.getString("sex"));
            res.setCity(resList.getString("city"));
            res.setStreet(resList.getString("street"));
            res.setTelephone(resList.getString("telephone"));
            researcherList.add(res);
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
    }

    return Response.ok(researcherList).build();
}

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

У Response нет обработчика для типа ArrayList.

Я бы преобразовал его в String и вернул бы это. В качестве первого среза вы можете попробовать:

return Response.ok(researcherList.toString()).build();

Кроме того, вы добавляете один и тот же Researcher объект каждый раз. Вы должны создавать новый объект Исследователя каждую итерацию цикла :

List<Researcher> researcherList = new ArrayList<Researcher>();
try {
    Researcher res = new Researcher();
    researcherList.add(res);
    ...

Возможно, ваше окончательное решение будет включать создание строки HTML из вашего списка:

return Response.ok(convertToHtml(researcherList)).build();

...

private static String convertToHtml(String< Researcher > researcherList) {
    // some implementation
}
1 голос
/ 21 ноября 2011

Вы добавляете один и тот же объект Researcher все время в цикле!Вы уверены, что это желательно?

Я полагаю, что перемещение Researcher res = new Researcher(); после while (resList.next()) { ..... может пригодиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...