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 和 IE8 中的 RPC 是不是“太大”?