Chúng tôi đang gặp lỗi SerializationException khi gửi danh sách các đối tượng sử dụng RPC và Java Generics.GWT và Generics
tôi là tạo widget này để hiển thị các lỗi:
public class Test<T> {
ListDataProvider<T> ldp = new ListDataProvider<T>();
public void setItems(List<T> list){
for(T t :list){
ldp.getList().add(t);
}
}
public List<T> getItems(){
return ldp.getList();
}
}
Đây là mã để tạo widget Test và đi qua một danh sách các POJO (nơi ExporterFormKey là đối tượng POJO)
List<ExporterFormKey> list = new ArrayList<ExporterFormKey>();
ExporterFormKey key = new ExporterFormKey();
key.setKey("key1");
list.add(key);
Test<ExporterFormKey> test = new Test<ExporterFormKey>();
test.setItems(list);
Vào cuối mã tiếp theo ném một SerializationException:
service.sendList(test.getList(), new AsyncCallback...);
trong khi tiếp theo một trong những hiện tốt:
service.sendList(list, new AsyncCallback...);
----- Sửa ----
tôi thấy rằng làm mã tiếp theo cũng làm việc
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>();
newList.add(test.getItems().get(0));
service.sendList(newList , new AsyncCallback...);
Hoặc này cũng làm việc
List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>(test.getItems());
Tôi cũng tìm thấy thay đổi này đối với công việc Kiểm tra!
public List<T> getItems(){
return new ArrayList<T>(ldp.getList());
}
Bạn có thể phải dùng thử test.getList() để nhập Danh sách hoặc Khai báo Kiểm tra bằng . –
SSR
Có lẽ ListDataProvider của bạn() không trả về một ArrayList nhưng thực hiện Danh sách khác (ví dụ một danh sách trả về Collections.unmodifiableList() hoặc một kiểu dẫn xuất AbstractList. Bạn có thể đăng toàn bộ SerializationException và nhật ký máy chủ không? serialization bị lỗi và đó là lớp vi phạm –
izaera