GWT RPC如何发送任何对象

Posted

技术标签:

【中文标题】GWT RPC如何发送任何对象【英文标题】:GWT RPC how to send any Object 【发布时间】:2011-01-26 19:11:04 【问题描述】:

我有一个关于 GWT RPC 和自制类的问题。

所以我为 GWT 创建类

public class B IsSerializable

public B()
private String b;
public B(String b)

this.b=b;


public String getB()return this.b;


我想将类发送到 GWT servlet。所以我在servlet中创建方法就像一个

public class TestService extends RemoteServiceServlet

    public String getServerReply(int a, B b)
    
    return b.getB()+" and hello from server";
    

但我总是在 AsyncCallback 方法中抛出异常

public void onFailure(Throwable caught) 

 

所以我很困惑,请问如何将B类发送到服务器?

期待你的建议

【问题讨论】:

如果您能说明传递给 onFailure 的异常,并且还请发布服务器日志中的内容,将会很有帮助。 日志什么也没显示...它是空的:( 【参考方案1】:

TestService(客户端):

public interface TestService extends RemoteService 
    public B getString();

TestServiceAsync(客户端):

public interface TestServiceAsync 
    public void getString(AsyncCallback<B> callback);

TestServiceImpl(服务器端);

public class TestServiceImpl extends RemoteServiceServlet implements TestService 
    public B getString() 
        return new B("Some String from the server");
    

拨打电话并处理消息:

TestServiceAsync service=(TestServiceAsync) GWT.create(TestService.class);
AsyncCallback<B> callback=new AsyncCallback<B>() 
    public void onFailure(Throwable caught) 
        Window.alert(caught.toString());
    
    public void onSuccess(B result) 
        Window.alert(result.getString());//Will show "Some String from the server"
    

service.getString(callback);

您需要三个文件来使 GWT-RPC 工作,客户端上的 2 个接口(...Service 和 ...ServiceAsync)和服务器上的 1 个类(...ServiceImpl)。

【讨论】:

谢谢 :) 我知道应该有 2 个接口,所以我做了......最后我成功发送 B 并获得服务器回复 事情是 A)我忘了实现客户端服务到我的 servlet B) 我不得不将我的 B 类型修改为一个客户端 public String getServerReply(int a, com.mycompany.project.client.B b) return b.getB()+" and hello from server";并且效果很好 :) 但我没有检查 getB() 是否为空,但第一步已完成 :)【参考方案2】:

谢谢:)

我知道应该有 2 个客户端接口,所以我做了... 最后我成功发送 B 并获得服务器回复 事情是

A) 我忘记为我的 servlet 实现客户端服务接口(因此调用被阻塞)

B) 我必须将我的 B 类型修改为客户端类型

--服务器端--

public String getServerReply(int a, com.mycompany.project.client.B b) 
 return b.getB()+" and hello from server";  

效果很好 :) 但我没有检查 getB() 是否为空,但第一步已经完成,我希望成功:)

【讨论】:

以上是关于GWT RPC如何发送任何对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 GWT RPC 序列化在 POST 中将对象从客户端发送到服务器

如何使用 GWT-RPC 以外的方式访问 GWT servlet?

GWT 2.3 升级后的 RPC 错误

如何知道一个对象对于 GWT 和 IE8 中的 RPC 是不是“太大”?

在 GWT 中,我们如何在 javascript 和 java 之间共享对象?

通过 GWT-RPC 发送持久的 JDO 实例