¿Cómo ejecutar la función JavaScript desde GWT Java con JSNI? [duplicar
Esta pregunta ya tiene una respuesta aquí:
¿Cómo llamar a la función Java GWT desde Javascript? 1 respuestaNo puedo entender del manual: ¿cómo ejecutar realmente la función JS desde Java?
Por ejemplo, tengo una función en mi página html:
<script type="text/javascript" language="javascript">
function foo() {
alert('Foo!');
}
</script>
l siguiente módulo muestra dos botones, de los cuales solo el segundo funciona:
public class Test_GoogleWeb_JSNI_01 implements EntryPoint {
public void onModuleLoad() {
Button fooButton = new Button("Foo!");
fooButton.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event) {
fooRunner();
};
});
HTML fooButtonNative = new HTML();
fooButtonNative.setHTML("<input type='button' value='Foo Native' onclick='foo()'>");
RootPanel rootPanel = RootPanel.get();
rootPanel.add(fooButton);
rootPanel.add(fooButtonNative);
}
public static native void fooRunner() /*-{
foo();
}-*/;
}
Se dice en el manual, que las funciones nativas implementadas dentro del marco anidado, lo que explica la situación. ¿Pero cómo ejecutar funciones JS entonces?
UPDATE 1 Los siguientes trabajos.
Java
public static native void fooRunner() /*-{
$doc.fooRunner();
}-*/;
JS:
<script type="text/javascript" language="javascript">
document.fooRunner = function foo() {
alert('Foo!');
}
</script>
¿Hay una mejor manera?