Devo implementare una funzione che chiama un servizio web e restituisce la risposta.Generatore di richieste Gwt - come restituire la stringa di risposta
ho cercato
public String getFolderJson(String path) {
String result="initial_value";
StringBuilder param = new StringBuilder();
param.append("?sessionId=").append(getSessionId());
param.append("&path=").append(path);
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "https://localhost/folder" + param);
try {
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request,
Response response) {
result = response.getText();
System.out.println(response.getText());
//I need to return "result"
}
@Override
public void onError(Request request, Throwable exception) {}
});
return result; //the result get returned before the response is recieved.So i am getting the return value "initial_value".
}
catch (RequestException e) {}
return null;
}
A chiamare getFolderJson()
servizio web viene chiamato con successo. Ma result
viene restituito prima che venga ricevuto il respnse. Quindi sto ottenendo il valore di retunr "initial_value".
Come restituire il valore dalla risposta quando la funzione getFolderJson()
?
Ho un componente browser di file. Devo restituire il risultato di 'getFolderJson (...)' quando il componente richiede i dettagli del foder. Non posso farlo con il modello di callback. –
Credo che ci siano modi per cambiare il tuo codice per usare i callback, questo è il modo in cui tutte le app RIA funzionano e ci sono un sacco o qualsiasi tipo di app. Magari potresti pubblicare un pezzo di codice più grande con la chiamata a 'getFolderJson' in modo da poter trovare una soluzione. Comunque nel caso in cui si continui a voler usare Ajax sincrono (cosa che scoraggio), copia semplicemente 'XMLHttpRequest.java' con il suo percorso completo nel tuo progetto e cambia la riga' this.open (httpMethod, url, true); 'con 'this.open (httpMethod, url, false);' –