You are on page 1of 13

Jakarta STRUTS

Curso de Capacitacin

Agenda
Introduccin Validator Framework Definicin y ejemplos. Tiles Framework Definicin y ejemplos.

Introduccin
En un ActionForm, la validacin se lleva a cabo definiendo un mtodo validate() en el formulario que deseamos validar. Struts automticamente validar los datos del requerimiento al instanciar el FormBean. Esta NO es la nica forma de validar los datos de un Form. Qu sucede en caso de utilizar un DynaActionForm? No se podrn validar los datos?

Validator Framework
Struts cuenta con un framework para validar los atributos de un FormBean, sea dinmico o no. Para utilizar el Validador hay que seguir estos pasos:
Agregar al struts-config el plug-in validador de struts, que ser el responsable de leer los archivos de configuracin.
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in>

Validator Framework

(cont.)

Copiar los archivos validator-rules.xml y validation.xml dentro de WEB-INF (struts-blank.war los provee).

Las clases correspondientes a los formularios debern heredar de ValidatorForm y no as de ActionForm. Este nuevo Form sobrescribe el mtodo validate() del ActionForm y se comunica con el Validator framework para que realice la validacin.

En caso de utilizar formularios Dinmicos, estos debern heredar de DynaValidatorActionForm y no de DynaActionForm.

Validator Framework
Agregar las validaciones en el archivo validation.xml.
<form name="loginForm"> <field property="username" depends="required"> <arg key="loginForm.username"/> </field> <field property="password" depends="required,mask"> <arg key="loginForm.password"/> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z]*$</var-value> </var> </field> </form>

(cont.)

Tiles Framework
Otro framework muy til que proporciona Struts es Tiles. Este permite organizar y estructurar la presentacin de nuestra aplicacin Web. Ejemplo:
TITULO

MENU

JSP

Tiles Framework
Para utilizar Tiles hay que seguir estos pasos:
Declarar el plugin en WEB-INF/web.xml:
<taglibs> <taglib> <taglib-uri>/tags/tiles</taglib-uri> <taglib-location>/WEB-INF/tiles.tld</taglib-location> </taglib> </taglibs>

(cont.)

Tiles Framework
Pasos para utilizar Tiles (cont.):
Agregar al struts-config el plug-in tiles de Struts.
<plug-in className="org.apache.struts.tiles.TilesPlugin" > <!-- Path to XML definition file -->

(cont.)

<set-property property="definitions-config"value="/WEB-INF/tiles-defs.xml"/> </plug-in>

Tiles Framework
Pasos para utilizar Tiles (cont.):

(cont.)

Copiar el archivo tiles-defs.xml dentro de WEB-INF (struts-blank.war lo provee) y agregar las definiciones.
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> <tiles-definitions> <definition name=".view.example" extends=".basic.layout"> <put name="title" value="Welcome to the Example."/> <put name="content" value="/jsp/viewExample.jsp"/> </definition> <definition name=".basic.layout" path="/jsp/basicLayout.jsp> <put name="title" value="Default title"/> <put name="header" value="/jsp/header.jsp"/> <put name="menu" value="/jsp/menu.jsp"/> <put name="content" value="/jsp/defaultContentPage.jsp"/> <put name="footer" value="/jsp/footer.jsp"/> </definition> </tiles-definitions>

Tiles Framework
Pasos para utilizar Tiles (cont.):

(cont.)

Crear una JSP que ser la encargada de estructurar la aplicacin web.


<%@ taglib uri="/tags/tiles" prefix="tiles" %> <html> <header><title><tiles:getAsString name="title"/></title></header> <body> <table> <tr><td colspan="2"><tiles:insert name="header"/></td></tr> <tr> <td><tiles:insert name="menu"/></td> <td><tiles:insert name="content"/></td> </tr> <tr><td colspan="2"><tiles:insert name="footer"/></td></tr> </table> </body> </html>

Tiles Framework
Pasos para utilizar Tiles (cont.):
Luego, un mapeo en Struts-config ser:
<action path="/Home" type="example.ExampleAction" input="exampleForm" ...> <forward name="success" path=".view.example" /> </action>

(cont.)

Tiles Framework
Para utilizar estilos:
<tiles-definitions> <!-- ... -->

(cont.)

<definition name=".basic.layout" path="/jsp/basicLayout.jsp> <put name="title" value="Default title"/> <!-- ... --> <putList name="styles"> <add value="/pages/styles/exampleStyle.css" /> </putList> </definition> </tiles-definitions>

You might also like