Ir al contenido principal

Creando un TLD dinamicamente con tobago apt plugin y Struts

Una de las tareas tediosas en JEE, es la de mantener nuestros TLD (definición de  librerías de Tag), cada vez que se cambia o agrega algo. Hace poco publique un post donde se explicaba como realizar taglibs utilizando el API de componentes de Struts, pues ahora se mostrara un plugin para Maven, mediante el cual podemos generar automáticamente un TLD, como observación interesante, cuando el TLD se almacena bajo el “META-INF”, no hay necesidad de agregarlo al “web.xml”, ni necesidad de tenerlo en bajo la estructura de directorios del WEB-INF.

Lo primero que debemos hacer, es agregar la carpeta “META-INF”, bajo main/resources, una nota al pie; Maven filtra cualquier directorio que no tenga ningún archivo, por lo tanto puedes agregar bajo “META-INF”, un archivo “README.txt”, con un mensaje como este (yo lo copie de Struts 2)

TLD file is generated inside META-INF after compilation.
If META-INF is empty, Maven will not copy it to the "target/classes" folder.
Please do not remove META-INF, or this file.

Esto permite que nuestra carpeta de “META-INF”, sea creada cuando se deploya el sobre la carpeta target, en caso que ya tengas un “META-INF” con al menos un archivo dentro, puedes omitir este paso.

El segundo paso es crear, la carpeta /src/site/resources/tags, en esta nuestro plugin almacena una serie de plantillas que utiliza para crear el TLD.

El siguiente trabajo es ir al pom.xml de Maven; en la sección de plugin e incluiremos el siguiente código:

                org.apache.myfaces.tobago
                maven-apt-plugin
                
                    target
                    false
                    true
                    true
                    true
                    org.apache.struts.annotations.taglib.apt.TLDAnnotationProcessorFactory
                    1.5
                    
                        **/*.java
                    
                
                
                    
                        compile
                        
                            execute
                        
                
                
            

Este plugin nos permite indicarle, los parámetros que deseamos utilizar para nuestro taglib, uri por ejemplo será el nombre de nuestro taglib, etc. El resultado cuando invoques a Maven compile, o algun objetivo que incluya esta fase del ciclo de vida, como packaged o install, seria algo como:

  2.2.3
  1.2
  my
  /my-tags
  "My Tags"
  

Puedes utilizar tanto los parámetros include o exclude al estilo de Ant, para agregar o limitar los paquetes o archivos a analizar.

Si te corres el nuevo pom.xml con tu Maven, te darás cuenta que el mismo crea tus taglib de HelloWord, que se había implementado en el articulo mencionado al inicio de este, sin embargo los atributos que incluye tu no los pusiste y además, en caso que agregues un atributo adicional, el taglib no será actualizado con este. Lo que pasa es que necesitas indicarle al Engine que crear el TLD, que tiene un atributo y deseas que el mismo se agregue al TLD, esto lo realizamos sencillo, anotando nuestro método set, con el siguiente annotation:

 @StrutsTagAttribute(description="Some attribute description", type="String", required=true)
Public void setNewAttribute () { …

Esto le indica, al Engine que este atributo debe ser agregado en nuestro TLD.


Como podrás notar, este proceso nos proporciona gran facilidad de mantenimiento y escalabilidad, pues el proceso de edición y creación de los taglib, se lo relegamos al ciclo de vida gestionado por Maven.

Algunos recursos de interés:

Comentarios

Entradas más populares de este blog

Pasos para remover Postgresql 8.3 en MAC OS

Tomado de: http://forums.enterprisedb.com/posts/list/1437.page In Mac OSX: (Assuming Default Locations) Via uninstaller: 1) In the installation directory, there will be a uninstall-postgresql.app file will be there, executing (double clicking) that will uninstall the postgresql installation. Manual Uninstallation: 1) Stop the server sudo /sbin/SystemStarter stop postgresql-8.3 2) Remove menu shortcuts: sudo rm -rf /Applications/PostgreSQL 8.3 3) Remove the ini file sudo rm -rf /etc/postgres-reg.ini 4) Removing Startup Items sudo rm -rf /Library/StartupItems/postgresql-8.3 5) Remove the data and installed files sudo rm -rf /Library/PostgreSQL/8.3 6) Delete the user postgres sudo dscl . delete /users/postgres

Validaciones con HTML5 sin necesidad de form.submit

Como parte de HTML5 existe la posibilidad de agregar información a los inputs de un form, para realizar validaciones; podemos indicar si queremos que sea requerido, con el tipo de datos; number, email, etc restringimos los valores que pueden ser agregados, podemos usar alguna mascara para validaciones, colocar mensajes de error custom, etc (en la red existen muchos ejemplos acerca de como customizar formularios). Ahora bien pongamos en contexto, tengo un formulario como este: <form name="managerForm"  id="managerForm">              <p>                  Name:                 <input id="managerNameText" required="required" placeholder="Write here the new manager name" size="40"/>              </p>             <p>                 Email:                 <input id="emailText" required="required" placeholder="myemail@myserver.com" type="email" />

Inventario anual de bebidas

Hola gente, Solo quería compartir mi inventario anual de bebidas (así conocer gustos), excluyendo algunas cervecillas que tengo por ahí guardadas, este es mi inventario: Ron: Flor de Cana 1 botella 5 anos. 2 botellas 7 anos una pacha 7 anos 2 botellas 12 anos 1 botella 18 anos Ron Zacapa 15 anos Centenario pachita 7 anos Centanario pachita 12 anos Bacardi limon Bacardi Razz Ron abuelo 7 anos Bacardi superior 1862 Ron Boltran XL Ron Centenario Garrafon Ron Jamaica Appleton 7 anos Ron Jamaica Appleton 12 anos (muchisimas gracias a Mayra :) Capitan Morgan Rum Jumbie, coconnut splash Ron coconut Malibu Ron Tequila Milagro Silver (muchisimas gracias a Pablito :) Sauza Gold Sauza Reposado Don Julio Reposado Vino Luigi Borer Malbec 2006 Casillero del Diablo, Caberut Sauviguon 2009 Vodka 2 botellas smirnoff y una smirnoff con sabor cranberry Cremas y otro licores Cahuita pacha Amaretto Barinet Licor de menta Licor de agave Rancho Escondido Bayleys 2 botellas (muchisimas gracias a Brian B :) Li