Webサービスを呼び出してレスポンスを返す関数を実装する必要があります。Gwt Request builder - レスポンス文字列を返す方法
私は、Webサービスが正常に呼び出されたgetFolderJson()
を呼んで
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;
}
を試してみました。しかし、respnseが受信される前にresult
が返されます。だから私はretunr値 "initial_value"を得ています。
getFolderJson()
が機能したときの応答から値を返す方法は?
私はファイルブラウザコンポーネントを持っています。コンポーネントがフォルダーの詳細を要求するときに、 'getFolderJson(...)'の結果を返す必要があります。コールバックパターンではできません。 –
私はあなたのコードをコールバックを使用するように変更する方法があると信じています。それはすべてのRIAアプリケーションが動作する方法であり、たくさんの種類のアプリケーションがあります。たぶん、getFolderJsonにコールしてより大きなコードを投稿して、解決策を見つけることができるかもしれません。とにかく、同期Ajax(私が落胆させている)を使いたい場合は、 'XMLHttpRequest.java'をプロジェクトにフルパスでコピーし、' this.open(httpMethod、url、true);という行を ' 'this.open(httpMethod、url、false);' –