/ / GWT RequestFactory non si attiva correttamente dopo aver usato edit () - google-app-engine, gwt, requestfactory

GWT RequestFactory non si attiva correttamente dopo aver usato edit () - google-app-engine, gwt, requestfactory

Ho un problema con l'uso di "fire ()" con un RequestFactory GWT dopo averlo usato per sbloccare e modificare un proxy.

Se ho due oggetti factory di richiesta e i loro contesti associati come questo:

private SyntheticRequest req1 = requestFactory.someRequest();
private Request<xProxy> sendRequest1 = req1.something();

private SyntheticRequest req2 = requestFactory.someRequest();
private Request<xProxy> sendRequest2 = req2.something();

usando "fire ()" sulla prima richiesta funziona benissimo:

sendRequest1.fire(new Receiver<xProxy>() {
@Override
public void onSuccess(xProxy response) {
...
if (somethingIsTrue){
xProxy x = req2.edit(response);  //<-- **I think this causes a problem later, although the proxy "x" works as expected here.**
x.setSomething("something");
update();
}
});

quella parte funziona bene perché arrivo a "onSuccess". Ma quando questo esegue "update ()", che assomiglia a questo:

private void update(){
sendRequest2.fire(new Receiver<xProxy>(){
...onFailure...
...onSuccess...
});
}

sendRequest2 fallisce sempre, con l'errore

Indice errore server: 0 Dimensione: 0

e ho inserito un punto di interruzione nel codice per il servizio "qualcosa ()" e non arriva nemmeno a quel codice! Deve esserci qualcosa in "req2.edit ()" che danneggia req2 e sendRequest2, ma cosa?

Grazie.

risposte:

3 per risposta № 1

che cos'è "b"? la linea xProxy x = req2.edit(b); è la prima volta che viene menzionata? xProxy x = req2.edit(response);

Comunque .. questo non è il problema .. "Errore server" indica che RequestFactory ha rilevato un'eccezione durante l'elaborazione di una richiesta, lato server. Qualcosa (ma forse non qualcosa ()) sta generando un'eccezione IndexOutOfBounds.

Se dai un'occhiata a RequestFactoryServlet.java (che puoi sostituire con il tuo btw molto facilmente) puoi vederlo mentre imposta un blocco try catch che rileva tutte le eccezioni durante l'elaborazione di una richiesta. Li passa a "DefaultExceptionHandler" che li avvolge in un ServerFailure e che viene restituito al codice GWT come una chiamata onFailure ().

Un modo semplice per trovare dove viene generata l'eccezione è impostare un breakpoint su IndexOutOfBoundsException, assicurandosi di catturare eccezioni "catturate" e non rilevate.