J'utilise des rappels asynchrones imbriqués pour enregistrer mes données frontales dans la base de données principale. Les données sont en train d'être sauvegardées dans les tables comme je le veux, mais c'est l'impression qui a échoué. Voici le code:Le rappel Asynchronuos enregistre la valeur mais imprime
if(erasync == null)
erasync = GWT.create(EntityRelationService.class);
AsyncCallback<Void> callback = new AsyncCallback<Void>(){
public void onFailure(Throwable caught) {
String msg = caught.getLocalizedMessage();
if (caught instanceof NotFoundException) {
msg = ((NotFoundException) caught).getType()
+ ((NotFoundException) caught).getMessage();
}
System.out.println("Failed" + msg);
}
public void onSuccess(Void result) {
if(erasync == null)
erasync = GWT.create(EntityRelationService.class);
AsyncCallback<Void> callbackOthers = new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
String msg = caught.getLocalizedMessage();
if (caught instanceof NotFoundException) {
msg = ((NotFoundException) caught).getType()
+ ((NotFoundException) caught).getMessage();
}
System.out.println("Failed" + msg);
caught.printStackTrace();
}
public void onSuccess(Void result) {
System.out.println("Success");
}
};
erasync.setEntityType(name, top, left, pname, callbackOthers);
};
erasync.setProject(name, callback);
Ici, il imprime avec succès pour la première rappel, mais pour une imbriqué il dit échoué si elle enregistre la valeur. Voici la pile qu'il imprime à l'échec:
com.google.gwt.user.client.rpc.StatusCodeException:
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:192)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:393)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)
Est-ce que je manque quelque chose?
Toute contribution sera d'une grande aide. Merci.
Veuillez écrire ce qu'il imprime exactement: "Échec ..." –
Il peut être utile de restructurer votre code pour inclure moins de classes anonymes en ligne (callbacks, clickhandlers). Rendre votre code plus lisible signifie que plus de gens seront en mesure de répondre à votre question, et vous pourriez même découvrir un bug lors de la refactorisation. –
J'ai essayé d'imprimer la pile d'erreurs mais c'est juste l'échec de l'impression (c'est l'instruction println dans la méthode d'échec de la méthode asynchrone). Je ne suis pas sûr pourquoi il entre dans la méthode Failure. – suprasad