如何在 Apache Axis 中返回列表



在tomcat上,我有一个从数据库中返回对象列表的类,如下所示:

List<Entity> list = null;
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
        con = Connector.getConexion();
        String sql = "SELECT * FROM some_table LIMIT 10;";
        pstm = con.prepareStatement(sql);
        rs = pstm.executeQuery();
        list = new ArrayList<>();
        EntityCrimesChicago ecc = null;
        while (rs.next()) {
            e = new Entity();
            e.setID(rs.getString(1));
            e.setCase_Number(rs.getString(2));
            list.add(e);
        }
        return list;
catch { ... }
finally { ... }

实体和表的所有字段都是字符串/变量,甚至是 ID。

该服务获取列表(这是一个 Web 方法):

public List<Entity> someThing(String q) {
    DAOThings controller = new DAOThings();
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q));
    return things;
}

此返回

java.io.IOException: No serializer found for class Entity in registry org.apache.axis.encoding.TypeMappingDelegate@26a0e5e4

但是,如果我更改 web 方法以返回String并且我使用返回对象的return things.toString();,但不返回他的内容。

如何正确返回列表?

我尝试返回一个手动添加的字符串列表并且工作正常。

我解决了将对象传递给字符串数组的问题。

当我得到对象列表时:

public List<Entity> someThing(String q) {
     DAOThings controller = new DAOThings();
     List<Entity> things = controller.getSomeThings(Integer.parseInt(q));
     return things;
}

我只需要这样做:

public List<String[]> someThing(String q) {
    DAOThings controller = new DAOThings();
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q));
    List<String[]> list = new ArrayList<>;
    for (Entity value : things) {
            String[] array = new String[obj_fields];
            array[0] = value.getAny();
            ...
            array[n] = value.getAny();
            list.add(array);
    }
    return list;
}

而Apache Axis做到了魔力。

最新更新