在 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 而不是 ArrayList 进行了调整。今天早上重新登录到***(新用户)时,由于ImJasonH要求“addNewQuestion”方法的签名,我意识到我已经对我的代码进行了如此多的变形,所以我不得不按原样重建它,但令我惊讶的是,它现在工作!它将 ArrayList 对象发送到服务器。谢谢大家:) 哦,我为我迟到的回复道歉,我以为 *** 会通过电子邮件通知我。 :) 【参考方案1】:

是的,可以在 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 作为参数类型?

如何在android中将arraylist或vector插入SQLite数据库?

Gwt-rpc 仅使用 DAO。摆脱 DTO

如何在 Java 中将对象添加到 ArrayList

在 Java 中将 'ArrayList<String> 转换为 'String[]'