2011-11-20 4 views
0

나는 연구원 클래스와 연구원 목록이 들어있는 researcherList라는 ArrayList가 있습니다.
나는 모든 연구자 정보를 데이터베이스에서 가져 와서 내가 만든 연구원리스트 ArrayList에 넣고 싶습니다. 클라이언트에 대한 나의 응답은 연구자 목록이 될 것입니다. 아래 코드를 작성하여 코드를보고 버그를 찾으십시오. 그것은 작동하지 않습니다. 예외가 발생합니다. 여기에 예외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(); 
} 
+1

** ** 예외가 발생 무엇을하고, 어떤 라인에? – Mat

+4

"작동하지 않으며 예외가 발생합니다." 즉, 당신이 우리에게 말하지 않은 정보를 얻었습니다. 예외는 무엇입니까. http://tinyurl.com/so-hints를 읽으십시오. 오, 그리고 * 예외를 삼키고 (SQLException으로 위의 코드 에서처럼) 그들이 결코 일어나지 않는 것처럼 계속하는 것은 거의 항상 나쁜 생각입니다. –

+0

어떤 예외가 있습니까? – soulcheck

답변

1

당신은 루프에서 같은 Researcher 객체 모든 시간을 추가입니다! 원하는 것이 확실합니까?

내가 while (resList.next()) { ..... 이후에 움직이는 것이 도움이 될 수도 있습니다.

1

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 
} 
+0

그것은 어떻게 든 좋은 고마워요 그것은 괜찮아요 HTTP 200 상태를 반환하지만 아무 정보가 데이터를 가져 오지 않고 xml 형식으로 생성됩니다 – user1046350

+0

어쩌면 포장 : + researcherList.toString() + ""'그래서 그것은 표시 – Bohemian