GWT RPC如何发送任何Object

时间:2011-01-26 19:11:04

标签: java gwt gwt-rpc

我有一个关于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类发送到服务器?

我期待你的建议

2 个答案:

答案 0 :(得分:2)

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个接口(...服务和... ServiceAsync)在客户端上,1个类(... ServiceImpl)在服务器上。

答案 1 :(得分:0)

谢谢:)

我知道应该有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()是否为null但是我希望成功完成第一步:)