2017-10-16 88 views
0

Tomcat上,我有一個類,從數據庫返回的對象的列表,像這樣:如何用Apache Axis返回一個列表

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 { ... } 

實體和表擁有的所有字段作爲字符串/ VARCHAR ,甚至是身份證。

服務獲取與該列表(這是一個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 [email protected] 

但是,如果我改變Web方法返回一個String我用return things.toString();返回的對象,但不是他的內容。

我能做些什麼來正確返回列表?

我嘗試返回manueally添加的字符串列表,並正常工作。

回答

0

我解決了將對象傳遞給String數組的問題。

當我對象列表:

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的確實神奇。