#Convención sobre configuración.
Significa que hay ciertas convenciones que si seguimos, nos simplifican el código
#onActionFromComponente
Asociar métodos con eventos
Ejemplo: Entonces, si necesito hacer algo en mi página cuando se le da submit a la forma llamada "saluda", tengo que implementar un método llamado onSubmitFromSaluda
Nota:Es importante mencionar que es convención; no es obligatorio.
Ejmplo:Mi método se podría llamar saludar, y para que Tapestry lo invoque cuando se hace submit de la forma entonces tendría que ponerle una anotación, así:
@OnEvent(component="forma", value="submit")
public Hola saluda() {
return paginaSaludo.saluda(nombre);
}
Tenemos en la página Nombre una variable tipo Hola, con una anotación para que Tapestry le inyecte una instancia de la página Hola. Esto es porque necesitamos invocar el método saluda() de la página Hola; si no tuviéramos que invocar ningún método y solamente nos interesa devolver una página, podríamos tener algo como return Hola.class y Tapestry al detectar que se devuelve una clase y que es de una página, toma a dicha página para activarla y devolverla al usuario. Podemos incluso agregar una validación para forzar a que teclearan algo; en ese caso podríamos tener el método de esta forma:
public Object saluda() {
if (nombre != null && nombre.length() > 0) {
return paginaSaludo.saluda(nombre);
}
return this;
}
De esa forma, si el usuario no teclea nada, volverá a llegar a la página Nombre. Por su parte, la página Hola tiene un método saluda() que recibe una cadena como parámetro y lo único que hace es asignarla a su propiedad nombre. Es lo único que necesitamos porque Tapestry se encargará de lo demás, que es el render del HTML evaluando la variable nombre. Espero que esto ilustre un poco el funcionamiento de las páginas en Tapestry. Próximamente escribiré acerca de cómo crear componentes simples, componentes que reciban parámetros, métodos en páginas que reciben parámetros, y otra cosa que también es importante, cómo almacenar objetos en sesión (es muuuuuy fácil).