Search code examples
javascriptgwtjsni

how to call JSNI function from Javascript function?


Here is caller button samples in html:

<input type='button' value='Call' onclick='Test()'>

And here are some functions I tried and which were not worked:

<script type="text/javascript">
    function Test() {
        com.tests.client.Test_GoogleWeb_JSNI::Callee()();
    }
</script>

But we are not able to call Callee().How we can achieve this?I mean how we can invoke JSNI function from javascript?

Help would be appreciated.


Solution

  • It's very easy. You need to "export" your function written in GWT (or it can be another JSNI) function.

    Here is the relevant documentation: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#calling

    So in your case:

    In your GWT code:

    public static void Caller() /*-{ 
       ... 
    }-*/
    
    public static native void exportStaticMethod() /*-{
       $wnd.Callee =
          $entry(@com.tests.client.Test_GoogleWeb_JSNI::Callee());
    }-*/;
    

    Then you call exportStaticMethod() somewhere, even in your onModuleLoad. << YOU MUST DO THIS

    Then you can call Callee() from your handwritten javascript code.

    Your code for the button:

    <input type='button' value='Call' onclick='$wnd.Callee();'>