gpt4 book ai didi

java - GWT 和泛型

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:25 25 4
gpt4 key购买 nike

我们在使用 RPC 和 Java 泛型发送对象列表时遇到 SerializationException 错误。

我正在创建这个小部件来显示错误:

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();

}

}

这是创建测试小部件并传递 POJO 列表的代码(其中 ExporterFormKey 是 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);

最后,下一段代码抛出一个 SerializationException:

service.sendList(test.getList(), new AsyncCallback...);

虽然下一个很好:

service.sendList(list, new AsyncCallback...);

-----编辑----

我发现做下一段代码也行

List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>();
newList.add(test.getItems().get(0));
service.sendList(newList , new AsyncCallback...);

或者这也行

List<ExporterFormKey> newList = new ArrayList<ExporterFormKey>(test.getItems());

我也在测试工作中发现了这个变化!

public List<T> getItems(){
return new ArrayList<T>(ldp.getList());
}

最佳答案

http://blog.rubiconred.com/2011/04/gwt-serializationexception-on-rpc-call.html

正如 izaera 所建议的,ListDataProvider 使用无法通过网络直接发送的不可序列化列表实现 (ListWrapper)。

按照您在帖子中的建议,将 ListDataProvider 的 getList() 方法的响应包装到新的 ArrayList 中是解决该问题的最简单方法。

关于java - GWT 和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com