2011-11-20 44 views
0

我有一個類Researcher,和一個名爲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對象所有的時間在一個循環!你確定它是想要的嗎?

我想移動Researcher res = new 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()+「」'so它顯示 – Bohemian