sábado, 17 de marzo de 2012

JSNI… JavaScript Native Interface (GWT)


JSNI es el mecanismo por el cual es posible invocar código javascript nativo (entre los comentarios /*-  -*/) desde código java.


Ejemplo  1. Ventana javascript dentro de código java (gwt).  
public static native void msg(String cad)/*-{
   $wnd.alert(‘Tu dices:  ’+cad);
}-*/;

Es necesario usar la palabra native y colocar las llaves dentro de comentarios para que el compilador java no lo considere un error.

//invoco el código javascript  dentro del código java
public void onModuleLoad(){
msg(“Es un buen día”);
}

Ejemplo 2. Manejar los mensajes tipo consola (firebug):
//defino los métodos  “logs”
public static native void info(Object obj)/*-{
   console.log(obj);
}-*/;

public static native void debug(Object obj)/*-{
   console.debug(obj);
}-*/;

public static native void warning(Object obj)/*-{
   console.warn(obj);
}-*/;

public static native void error(Object obj)/*-{
   console.error(obj);
}-*/;
Ahora invocarlos en código java
public void onModuleLoad(){
info(“iniciando aplicación web…”);
try{
debug(“se ha creado el objeto satisfactoriamente”);
warning(“esperando un error”);
}catch(Exception ex){
error(“error encontrado:  ”+ex+” causa: ”+ex.getCause());
}
}

Para poder ver los mensajes es necesario activar firebug dentro de firefox o chrome. Esto puede ser una buena práctica de testing.


Ejemplo 3. Contenido html

public static native void contenido()/*-{
document.write(“<h1>GWT ejemplos</h1>”);
}-*/;
//invocar el método
public void onModuleLoad(){
       contenido();
      RootPanel.get().add(new  Acceso.getVista());
}

No hay comentarios:

Publicar un comentario