2012-04-13 12 views
0

RCPアプリケーションでは、SWTブラウザにGWTベースのWebアプリケーションを表示しています。SWT Browser/SWT BrowserFunction経由でGWTアプリからJavaメソッドを呼び出す

私の目標は、GWTアプリケーション内からJavaメソッドを呼び出すことです。

私が理解できることは、Webアプリケーション内から呼び出せるjavaメソッドを挿入するSWT BrowserFunctionを使用することです。私はそれが動作するように取得することはできないんだけど、いくつかの理由

... RCPで

onModuleLoadの一環として、私はメソッドを呼び出しています、私は私のGWTのEntryPointで次

public class GWTBrowserView extends ViewPart { 
    private GWTBrowser browser; 

    @Override 
    public void createPartControl(final Composite parent) { 
      this.browser = new GWTBrowser(parent, SWT.NONE); 
      this.browser.setUrl("url of gwt app"); 
      new BrowserFunction(this.browser, "onGWTEvent") { 

        @Override 
        public Object function(final Object[] arguments) { 
          // Do something fancy 
          return super.function(arguments); 
        } 
      }; 
    } 

を定義し:

SWTブラウザ経由でGWTとRCP間の通信を確立する方法はありますか?

答えて

2

JSNIから間違った機能が呼び出されています。これは以下のようになりますときに、

private native void fireRCPEvent(String rcpEventJSON) /*-{ 
try{ 
    $wnd.onGWTEvent(rcpEventJSON); //notice the usage of $wnd object 
} catch(e) { 
    alert(e.message) 
} 
}-*/ 

GWTコンパイルJSコードは通常、いくつかの分離状況(例えばインラインフレーム)で実行されているので、明示的にあなたが親ウィンドウ($wndオブジェクト)から関数を呼び出したいことを指定する必要があります外部関数を呼び出す必要があります。

+0

ああ、私はそれを知らなかった。それはトリックでした!ありがとうございました – cliff

関連する問題