在 GWT-RPC 中将 ArrayList 作为参数发送
Posted
技术标签:
【中文标题】在 GWT-RPC 中将 ArrayList 作为参数发送【英文标题】:Sending an ArrayList as a parameter in GWT-RPC 【发布时间】:2009-12-18 01:57:01 【问题描述】:我尝试将 ArrayList 发送到 GWT 中的 RPC 服务,但一直失败。 这是我的代码片段
greetingService.addNewQuestion(questionnaireKey, questionText, qcList, new AsyncCallback<Boolean>()
@Override
public void onFailure(Throwable caught)
Window.alert("Something went wrong!\n"+caught.getMessage());
@Override
public void onSuccess(Boolean result)
Window.alert("Question Added!");
);
QuestionChoice是一个没有方法的简单对象,qcList是一个QuestionChoice的ArrayList
public class QuestionChoice implements IsSerializable
/**
*
*/
private static final long serialVersionUID = 5668640935838672293L;
public String text;
public boolean isCorrect;
public QuestionChoice()
public QuestionChoice(String text, boolean isCorrect)
this.text = text;
this.isCorrect = isCorrect;
有没有人尝试在 GWT-RPC 中发送 ArrayList 作为参数? 如果您这样做,请尝试在此处发布您的示例代码。 谢谢。
【问题讨论】:
是的。可以在 GWT Rpc 中发送 ArrayList。我认为您的代码没有错误。请您发布您遇到的错误。 能把 GreetingService 的 addNewQuestion 的签名贴出来吗?以及你得到的错误(它是在编译时还是运行时失败?) 大家好,我猜错误是在我的开发环境中。也许是缺乏项目刷新、项目清理、重建、GWT 编译和应用程序引擎重新加载。昨天发布问题后,我使用 ArrayList是的,可以在 GWT-RPC 调用中将 ArrayList 作为参数发送。在开发 GWT-RPC 代码的时候,很多时候调用 GWT-RPC 中的请求可能会遇到错误,这是由于 GWT-RPC 服务的变化可能没有对应客户端编译的 GWT-RPC定义。为了解决这个问题,每当您更改服务器端类或 GWT-RPC 服务定义(即 GreetingService、GreetingServiceAsync 和 GreetingServiceImpl 中的代码)中的代码时,您都必须重新启动开发服务器
【讨论】:
【参考方案2】:如果您使用的是 GWT 1.5 和 Java 1.6,问题在于 @Override 注释,您并没有真正覆盖方法,而是在实现。去掉注释,一切都会好起来的。
【讨论】:
在 java 1.6 语言级别,@Override 注解也允许实现接口方法。ivanceras 可以使用 java 1.6 语言级别。 好的,但是 GWT 抱怨它。当您在已实现的方法上使用 @Override 时,它会导致在开发人员 shell 上显示错误。好吧,至少它发生在我身上。 实际上,如果您使用 GWT 1.5 和 Java 1.6,就会出现这个问题。对此感到抱歉。以上是关于在 GWT-RPC 中将 ArrayList 作为参数发送的主要内容,如果未能解决你的问题,请参考以下文章
GWT-RPC 序列化的 ImmutableCollection 声明
GWT-RPC 服务是不是应该使用 java.io.Serializable 作为参数类型?