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) {}
});
答案 0 :(得分: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没有内置支持来使用外部窗口。