martes, 22 de septiembre de 2009

Manejo de peticiones en Wicket

Cuando Wicket determina que debe manejar una petición, delega su procesamiento a un objeto de tipo RequestCycle. El procesaminto se realiza en 4 pasos consecutivos que se muestran en la siguiente figura (hacer click en la imagen para ver con más claridad):



La gestión de URLs en Wicket es flexible, y en ocasiones, el mismo tipo de petición puede ser codificada de múltiples maneras. Por ejemplo, dependiendo de la configuración, los fragmentos de URL foo=bar, foo/bar y x773s=09is7 pueden significar lo mismo. En el primer paso del manejo de una petición, Wicket decodifica (desempaqueta los valores codificados) la URL de la petición sin importar la forma que tenga, Wicket lo interpreta de una única manera. El resultado de la decodificación es almacenado en un objeto de tipo RequestParameter.

Si observas los valores decodificados del objeto RequestParameter de la figura, puedes suponer qué hace la petición. La ruta de componente 2:actionLink hace referencia al componente con la ruta actionLink, que se encuentra en la página que Wicket conoce mediante el identificador 2. Wicket asigna números de versión cuando se producen cambios estructurales en las instancias de las páginas (por ejemplo, cuando se reemplazan, ocultan o se muestran componentes). En este caso, la versión de la página derivada de la decodificación de la URL es 0, lo que significa que nos encontramos ante la primera (sin modificar) instancia de la página.

En el siguiente paso, Wicket determina el RequestTarget. Wicket puede manejar diferentes tipos de peticiones -por ejemplo, páginas referenciables (el término en inglés es bookmarkable, es decir, páginas a las que podemos acceder poniendo la URL en el navegador), recursos compartidos, y peticiones AJAX. En la figura, la RequestTarget es una instancia de la clase ListenerInterfaceRequestTarget que encapsula la llamada a un enlace (interfaz ILinkListener) de una página previamente renderizada. En este caso, se obtiene la página previamente renderizada usando el identificador 2 y la versión 0, como puedes ver.

El tercer paso, procesamiento de los eventos, es opcional. Se usa para cosas como llamadas a enlaces o a comportamientos Ajax (los componentes en Wicket se pueden extender agregándoles comportamientos), pero no para páginas referenciables o para recursos compartidos. Durante el procesamiento de los eventos, la petición objetivo puede cambiar. Por ejemplo, esto puede ocurrir cuendo se llama a setResponsePage en el método onSubmit de un formulario, en cuyo caso una instancia de PageRequestTarget se usa para el resto del procesamiento de la petición. Llamando a setResponsePage es como más fácilmente se puede navegar de una página a otra cuando se manejan eventos como onClick u onSubmit.

El paso final es responder al cliente. Como ya se ha mencionado, el procesamiento final de una petición se delega al RequestTarget, que es el encargado de crear la respuesta. Un PageRequestTarget se ocupa de renderizar una página y enviarlar al cliente, un ShareResourceRequestTarget se encarga de localizar un recurso (un imagen por ejemplo) y enviarla al cliente, y un AjaxRequestTarget se encarga de renderizar componentes individuales y generar una respuesta XML que la librería Ajax del cliente pueda interpretar

domingo, 20 de septiembre de 2009

Crear un proyecto Wicket

En el siguiente enlace tenemos una utilidad que nos genera el comando para crear un proyecto Wicket con Maven, sólo tendremos que indicar groupId y artifactId de un proyecto con Maven.

Crear un proyecto Tapestry 5 con Maven

1) Hay que ejecutar el siguiente comando:
mvn archetype:generate -DarchetypeCatalog=http://tapestry.formos.com/maven-repository

Al ejecutar este comando en consola, nos pedirá los siguientes parámetros:
  • groupId
  • artifactId
  • version
  • package
Al terminar de generar el proyecto nos creará una carpeta con el nombre indicado en artifactId.
Para preparar el proyecto para Eclipse nos introduciremos en la carpeta del proyecto y ejecutaremos el siguiente comando:

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

Ya sólo queda copiar la carpeta creada a nuestra carpeta de proyectos de Eclipse y crear un nuevo proyecto java en eclipse con el mismo nombre. Después de crearlo tendremos que habilitar Maven para el nuevo proyecto.

Para más información visitar el siguiente enlace.