2012-05-14 3 views
0

GWT Window#open метод может быть использован для открытия нового окна браузера, но он работает в направлении обычного синхронного URL-соединения. Как отобразить асинхронный результат из вызова GWT RPC в новом окне браузера ниже?Отобразить результат GWT RPC в новом окне

 myServiceAsync.getHtmlResult(new AsyncCallback<String>() { 
      @Override 
      public void onSuccess(String htmlResult) { 

//how to display #htmlResult in a new browser window? 

      } 
      @Override 
      public void onFailure(Throwable caught) {} 
     }); 

ответ

1

Для решения этой проблемы вы можете использовать Javascript через JSNI.

метод, как это делает трюк:

public native void showWindowWithHtml(String html)/*-{ 
    var newWindow = $wnd.open("about:blank"); //receive a reference to the window object 
    newWindow.document.body.innerHTML = html; //works for IE9 and Chrome 
    newWindow.onload = function(){newWindow.document.body.innerHTML = html} //works for Firefox 11 

}-*/; 

Когда вы звоните, это новое окно с заданным HTML. Также не то, что js внутри этого родного метода является просто примером, я не гарантирую, что он всегда будет работать везде.

Вам придется использовать этот подход, поскольку GWT не имеет встроенной поддержки для работы с внешними окнами.

+0

Спасибо за ваш подход JSNI, я попробую. – sof

Смежные вопросы