我有一个关于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类发送到服务器?
我期待你的建议
答案 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但是我希望成功完成第一步:)