Realizar peticiones Ajax a tus componentes en Seam es increíblemente fácil gracias al framework Seam Remoting.
Con solo añadir un par de lineas de javascript, tu componente escrito en Java se convierte en un componente javascript, pudiendo acceder a sus campos y ejecutar sus métodos asíncronamente.
En simplemente tres pasos podemos invocar a un componente y manejar la respuesta.
1) Indica los métodos que van a invocarse vía Ajax
Simplemente marca con la anotación @WebRemote los métodos que quieras invocar por Ajax.
@Name(«calculadora»)
public class Calculadora {
private float pi = 3.14;
private float n = 10;
@WebRemote
public int suma(float a, float b) {
return a+b
}
@WebRemote
public int sumaConstante(float a) {
return this.n + a;
}
// Este metodo no está marcado con @WebRemote, por lo que no se puede invocar desde javascript
public void metodoNoAjax() {
}
public float getPi() { return this.pi;}
}
Si quisieses invocar un EJB en lugar de un POJO, las anotaciones @WebRemote deberán estar en la declaración los métodos de la interface del EJB.
2) Importa los scripts necesarios
Primero debes importar el script que contiene el código que permite las llamadas remotas:
[/js]
Ahora por cada componente que contenga métodos que quieras invocar vía Ajax debes importar otro script en el que indicas el nombre del componente (el que has definido en la anotacion @Name).
Este script contiene el stub del componente, que indica los métodos a los que puedes llamar y la definición de sus tipos.
Por ejemplo, si tienes un componente anotado con @Name(«calculadora») deberás incluir la siguiente linea
[js]
Si quisieses acceder a más de un componente en la misma página puedes especificar varios componentes:
[/js]
También puedes importar el javascript de los componentes usando el tag s:remote.
[js]<s>
3) Invoca el método y maneja la respuesta
Ahora podemos invocar los métodos de nuestra calculadora marcados con @WebRemote.
Para obtener los objetos javascript que representan nuestros componentes debemos hacerlo a través de Seam.Component.
En la llamada le pasamos los parámetros que tenga el método al que estemos invocando (admite sobrecarga) y un último parámetro que será la función a la que se invocará con el resultado de la invocación
// mostrará un 6
}
// ]]>
También puedes acceder a los campos del componente que tengan un getter asignar un valor a los que tengan un setter.
// mostrará 30
alert(calc.pi); // –> mostrará 3.14
}
// ]]>
Seam Remoting también permite evaluar EL Expressions, trabajar con Collections, hacer debug de las llamadas enviadas y recibidas, suscribirse a una cola JMS.
Toda esta información y más se encuentra disponible en la documentación en inglés
0 comentarios