2015-06-09 43 views
2

我正在使用GWT-RPC來創建應用程序。在某些時候,服務器使用Collections.unmodifiableList(List l)向客戶端返回一個Collection。客戶給出了一個錯誤:我不能在GWT Collections.unmodifiableList(List l)中使用,使得我的列表只能讀取,因爲不可序列化,替代方法?

[WARN] Exception while dispatching incoming RPC call 
com.google.gwt.user.client.rpc.SerializationException: Type 'java.util.Collections$UnmodifiableList' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized 

所以,我需要一個替代方法來獲得唯一可讀的集合,我該怎麼做呢?非常感謝

我的代碼如下:

try { 
     LinkedList all=new LinkedList(); 
     while(res.next()){ 
      all.add(objectFromCursor(res)); 
     } 
     return Collections.unmodifiableList(all); 
    } catch (SQLException e) { 
     throw new ExceptionHandler("Error: "+e.getMessage()); 
    } 



private static Film objectFromCursor(ResultSet res) throws SQLException{ 
    Film film=new Film(res.getString(1)); 
    film.setRegista(res.getString(2)); 
    film.setAnnoDiProduzione(res.getInt(3)); 
    return film; 
} 
+1

爲什麼您需要在GWT-RPC上傳遞一個不可修改的列表?該列表一旦到達客戶端就會從服務器的實例中分離出來,即客戶端修改不會傳播到服務器(除非您在另一個GWT-RPC請求中發回它)。 –

回答

1

一個不可修改的序列化集合似乎本身就是一個矛盾。爲了反序列化對象(我認爲「可反序列化」被「可序列化」隱含),它必須是可修改的。

因此,只需使用可修改的集合即可通過GWT-RPC傳遞。

相關問題