0

GWT Window#open方法可用于打开新的浏览器窗口,但它适用于正常的同步 URL 连接。如何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) {}
        });
4

1 回答 1

1

您可以通过JSNI使用 Javascript来解决这个问题。

像这样的方法可以解决问题:

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 没有对使用外部窗口的内置支持。

于 2012-05-15T13:09:22.973 回答