繁体   English   中英

Arraylist实施

[英]Arraylist implementation

我有一个类Researcher和一个名为researcherList的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();
}

您是在循环中一直添加相同的Researcher对象! 你确定它是你想要的吗?

我想移动Researcher res = new Researcher(); 之后while (resList.next()) { .....可能会派上用场。

Response没有ArrayList类型的处理程序。

我会将它转换为String并返回它。 作为第一次切割,您可以尝试:

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

此外,您每次都添加相同的 Researcher对象。 您应该在每次循环迭代时创建一个新的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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM