Apache Wicket , comúnmente conocido como Wicket , es un marco de trabajo de aplicaciones web basado en componentes para el lenguaje de programación Java, conceptualmente similar a JavaServer Faces y Tapestry . Fue escrito originalmente por Jonathan Locke en abril de 2004. La versión 1.0 se lanzó en junio de 2005. Se convirtió en un proyecto de nivel superior de Apache en junio de 2007. [2]
Los marcos de trabajo tradicionales de modelo-vista-controlador (MVC) funcionan en términos de solicitudes completas y páginas completas. En cada ciclo de solicitud, la solicitud entrante se asigna a un método en un objeto controlador , que luego genera la respuesta saliente en su totalidad, generalmente extrayendo datos de un modelo para completar una vista escrita en un marcado de plantilla especializado. Esto mantiene el flujo de control de la aplicación simple y claro, pero puede dificultar la reutilización del código en el controlador.
Por el contrario, Wicket sigue de cerca el modelo de los marcos de interfaz gráfica de usuario con estado , como Swing . Las aplicaciones Wicket son árboles de componentes que utilizan delegados de escucha para reaccionar a las solicitudes HTTP en relación con los enlaces y formularios de la misma manera que los componentes Swing reaccionan a los eventos de pulsación de teclas y del ratón. Wicket se clasifica como un marco basado en componentes.
Wicket utiliza XHTML simple para las plantillas (lo que impone una clara separación entre la presentación y la lógica empresarial y permite editar las plantillas con herramientas de diseño WYSIWYG convencionales [3] ). Cada componente está vinculado a un elemento nombrado en el XHTML y se vuelve responsable de representar ese elemento en el resultado final. La página es simplemente el componente contenedor de nivel superior y está emparejado con exactamente una plantilla XHTML. Mediante el uso de una etiqueta especial, un grupo de componentes individuales se puede abstraer en un solo componente llamado panel , que luego se puede reutilizar en su totalidad en esa página, otras páginas o incluso otros paneles.
Cada componente está respaldado por su propio modelo, que representa el estado del componente. El marco no tiene conocimiento de cómo interactúan los componentes con sus modelos, que se tratan como objetos opacos serializados y persistentes automáticamente entre solicitudes. Sin embargo, los modelos más complejos se pueden hacer desmontables y proporcionar ganchos para organizar su propio almacenamiento y restauración al principio y al final de cada ciclo de solicitud. Wicket no exige ninguna capa de persistencia de objetos u ORM en particular , por lo que las aplicaciones a menudo usan alguna combinación de objetos Hibernate [ cita requerida ] , EJB o POJO como modelos.
En Wicket, todo el estado del lado del servidor se administra automáticamente. Nunca debe usar directamente un objeto HttpSession o un contenedor similar para almacenar el estado. En cambio, el estado se asocia con los componentes. Cada componente de página del lado del servidor contiene una jerarquía anidada de componentes con estado, donde el modelo de cada componente es, al final, un POJO (Plain Old Java Object)
Wicket busca la simplicidad. No hay archivos de configuración que aprender en Wicket. Wicket es una biblioteca de clases simple con un enfoque consistente para la estructura de componentes.
Una aplicación Hello World Wicket, con cuatro archivos:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xmlns:wicket= "http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd" xml:lang= "en" lang= "en" > <body> <span wicket:id= "message" id= "message" > El mensaje va aquí </span> </body> </html>
paquete org.wikipedia.wicket ; importar org.apache.wicket.markup.html.WebPage ; importar org.apache.wicket.markup.html.basic.Label ; clase pública HolaMundo extiende WebPage { /** * Constructor */ public HelloWorld () { add ( new Label ( "mensaje" , "¡Hola Mundo!" )); } }
paquete org.wikipedia.wicket ; importar org.apache.wicket.protocol.http.WebApplication ; clase pública HelloWorldApplication extiende WebApplication { /** * Constructor. */ public HelloWorldApplication () { } /** * @see org.apache.wicket.Application#getHomePage() */ public Class getHomePage () { return HolaMundo . clase ; } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns= "http://java.sun.com/xml/ns/javaee" xmlns:web= "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id= "WebApp_ID" version= "2.5" > <nombre-para-mostrar> Ejemplo de Wicket </nombre-para-mostrar> <filtro> <nombre-para-filtro> HelloWorldApplication </nombre-para-filtro> <clase-para-filtro> org.apache.wicket.protocol.http.WicketFilter </filter-class> <init-param> <param-name> applicationClassName </param-name> <param-value> org.wikipedia.wicket.HelloWorldApplication </param-value> </init-param> </filter> <filter-mapping> <filter-name> HelloWorldApplication </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> </web-app>
Los componentes básicos como formularios, enlaces, repetidores, etc. están integrados.
{{cite web}}
: Falta o está vacío |title=
( ayuda )Sitio web oficial