GWT JSNI renvoie une fonction js

Comment puis-je renvoyer une fonction JavaScript de JSNI dans GWT? Je l'ai essayé de la manière suivante:

/* JSNI method returning a js-function */ public static native JavaScriptObject native_getFunction() /*-{ return function(a,b){ //do some stuff with a,b } }-*/; 

Rangez la fonction dans une variable

 /* outside from GWT: store the function in a variable */ JavaScriptObject myFunction = native_getFunction(); 

L'utilisation de la fonction produit ensuite le message d'erreur suivant:

 (TypeError): object is not a function 

Est-ce que quelqu'un sait comment résoudre ce problème?

Cela fonctionne pour moi. Déclarez ces méthodes:

 public static native JavaScriptObject native_getFunction() /*-{ return function(a,b){ //do some stuff with a,b } }-*/; private native void invoke(JavaScriptObject func)/*-{ func("a", "b"); }-*/; 

Ensuite, vous utilisez ces méthodes de cette façon:

 JavaScriptObject func = native_getFunction(); invoke(func); 

appName.nochache.js(GWT) vous considérons appName.nochache.js(GWT) dans Homepage.html

Dans la homepage.html

 <script> function printMyName(name) { alert("Hello from JavaScript, " + name); } </script> 

Dans votre Gwt:

Dans votre source Gwt, vous pouvez accéder à la fonction sayHello () JS via JSNI:

 native void printMyNameInGwt(String name) /*-{ $wnd.printMyName(name); // $wnd is a JSNI synonym for 'window' }-*/; 

Vous pouvez les attribuer à des variables aussi

 native void printMyNameInGwt(String name) /*-{ var myname =$wnd.printMyName(name); // return that for your purposes }-*/; 

Remarque: si vous appelez une méthode js de tout fichier exterenal qui devrait être ajouté à votre page html avec les balises <script>