AutoBeansをGWTアプリに追加して、オブジェクトをCookieにシリアル化してから、読み直してみました。
ただし、この後、逆シリアル化されたオブジェクトを使用してGWTRPCメソッド呼び出しを呼び出すのに問題があります。RPC呼び出しが失敗する理由について誰かが洞察を提供できますか?
デモンストレーション:
public interface Worker {
public String getTitle();
public void setTitle(String title);
}
public interface WorkerFactory extends AutoBeanFactory {
AutoBean<Worker> createWorker();
}
public class MyObject implements Worker {
private String title;
public MyObject() {
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
次に、次のコマンドで実行します。
@Test
public void testMyObject() {
MyObject obj = new MyObject();
obj.setTitle("titely");
WorkerFactory factory = AutoBeanFactorySource.create(WorkerFactory.class);
AutoBean<Worker> bean = factory.create(Worker.class, obj);
String json = AutoBeanCodex.encode(bean).getPayload();
System.out.println("Json is: " + json);
bean = AutoBeanCodex.decode(factory, Worker.class, json);
Worker newObject = bean.as();
System.out.println("Object title is: " + newObject.getTitle());
}
...これは期待どおりに機能しているようです:
Json is: {"title":"titely"}
Object title is: titely
しかし今、私のRPCメソッドは失敗し、それはcaught.getMessage()
ですnull
。
サービス定義:
@RemoteServiceRelativePath("workerService")
interface WorkerService {
public void doWork(Worker worker);
}
public interface WorkerServiceAsync {
void doWork(Worker worker, AsyncCallback<Void> callback);
}
public class WorkerServiceImpl extends RemoteServiceServlet implements WorkerService {
@Override
public void doWork(Worker worker) {
// Do stuff that never gets called
}
}
呼び出される:
WorkerServiceAsync WORKER_SERVICE = GWT.create(WorkerService.class);
WORKER_SERVICE.doWork(newObject, new AsyncCallback<Void>() {
public void onSuccess(Void result) {
Window.alert("Never get here!");
}
public void onFailure(Throwable caught) {
Window.alert("Get here, but message is blank: " + caught.getMessage());
}
});
さらに、サーバーログにリクエストが表示されません。
誰か助けてもらえますか?どうもありがとう