在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做到了魔力。