GENERIC TAGSCURSO STRUTS 2 En el siguiente apartado del curso se mostrará el grupo de Tags Generic de Struts 2, realizando una revisión de cada una de ellas. La información que se estudiará en este apartado es: ¿Qué son las Generic Tags? Tipos de Generic Tags Control Tags Data Tags
GENERIC TAGSCURSO STRUTS 2 ¿QUÉ SON LAS GENERIC TAGS ? Las Generic Tags de Struts 2 es una librería de etiquetas, que son utilizadas para el control de las páginas cuando la Vista es procesada, permitiendo labores de procesamiento sobre los datos. Uso de las Generic Tags Para poder utilizar las Generic Tags de Struts 2 sólo hay que invocar a la siguiente directiva: Para cualquier parámetro de los tags se pueden asignar distintos valores: valor estático o expresión OGNL. Para que se evalúen el valor del atributo del tag, como una expresión OGNL es necesario que el valor esté delimitado por la sintaxis de OGNL, %{ }.... test=”usuario”...//test= varlo fijo “usuario”... test=”%{usuario}”...//test= valor OGNL “usuario” (dinámico)... test=”%{#session.usuario}”...//test= valor OGNL “#session.usuario”... test=”%{5 + 5}”...//test= valor OGNL igual a 10 Generic Tags VS UI Tags La mayor diferencia entre las generic tags y las UI tags es, que las generic tags devuelven la respuesta directamente, mientras que las UI tags utilizan plantillas (templates) para representar su respuesta en función del theme seleccionado.
GENERIC TAGSCURSO STRUTS 2 TIPOS DE GENERIC TAGS Las generic tags se pueden dividir en dos grupos en función de su objetivo: Control Tags Data Tags. Data Tags Las data tags se utiliza para manipular o crear datos, como los bean o mensajes i18n Ejemplo Control Tags Las control tags son utilizadas para controlar el flujo en la Vista, como las sentencias if... else. Ejemplo Has elegido 1 Has elegido 2
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Las control tags son utilizadas para controlar el flujo en la Vista, como las sentencias if... else. La lista de control tags es: append else elseIf generator if iterator merge sort subset
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tags if, elseIf y else Estos tres tags se utilizan para formular sentencias condicionales, funcionando de la misma forma que en Java. Los tags if y elseIf requieren de un atributo, mientras que el tag else no tiene ningún atributo. Atributos Atributo Tipo DatoValor Defecto Descripción test*BooleanSentencia condicional Ejemplo Has elegido 1 Has elegido 2 Has elegido otro número distinto a 1 y 2
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag append Este tag se utiliza para concatenar iterators respetando el orden de los elementos de las listas y el orden e las propias listas. Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción varStringLa variable que se creará que referencia el objeto iterator concatenado.
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag merge El tag merge une listas para crear una lista que contenga todos los elmentos. El orden el que se añaden los elementos es alterno, se lee un elemento de cada lista en sucesión. Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción varStringLa variable que se creará que referencia el objeto iterator concatenado.
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag iterator Este tag permite recorrer los datos de un array, Collection o un Map, y para cada uno de los elementos del objeto iterable lo almacena en el Value Stack Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción valueStringEl objeto iterable a mostrar sus datos statusIteratorStatus asignar a una variable que apunte al objeto IteratorStatus varStringNombre de referencia del elemento actual del objeto iterable. El objeto IteratorStatus que se obtiene del atributo “status” dispone de los siguientes atributos, que pueden ser útiles en la representación de datos en la bucle. Propiedad Tipo Dato Descripción indexIntegerEl índice de la iteración, comenzando en 0 countIntegerLa iteración actual index + 1 firstBooleanIndica si el elemento actual es el primero del objeto iterable lastBooleanIndica si el elemento actual es el último del objeto iterable evenBooleanIndica si el número (count) del elemento actual es par oddBooleanIndica si el número (count) del elemento actual es impar modulusIntegerEste método toma un Integer y devuelve el módulo del contador
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag generator Esta tag se utiliza para crear un iterator and guardarlo en el Value Stack. Al cerrar el tag generator se elimina del Value Stack, por este motivo solo se puede trabajar con el iterator entre las tags de generator Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción val*StringEl código para ser convertido en un iterator separator*Stringdelimitador que separa la entrada val en elementos para convertir converterConverterclase Converter para convertir la entrada String pasa en val a un Objeto, debe ser una clase de tipo Converter, que implemente el interface org.apache.struts2.util.IteratorGenerator countIntegernúmero máximo de elementos en el iterator varStringvariable que referencia al iterator resultante
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag sort El tag sort permite ordenar los elementos de un iterator. Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción comparator*java.util.Comparatorclase Comparator que se utilizará para realizar la comparación de los elementos sourceStringorigen de datos del iterator para ordenarlo varStringvariable que referencia al nuevo iterator resultante ordenado
GENERIC TAGSCURSO STRUTS 2 CONTROL TAGS Tag subset Este tar permite crear un sublista de un objeto iterator. Atributos Ejemplo En el anterior código el atributo decider, invocará al método getFiltroPoblacionDecider(), implementado en el Action el cual realiza un filtro de un listado de ciudades por el número de población. Atributo Tipo DatoValor Defecto Descripción sourceStringorigen de datos del iterator varStringvariable que referencia al nuevo iterator resultante countIntegernúmero de entradas en el iterator resultante deciderDeciderclase que implemente el interface SubsetIteratorFilter.Decider, el cual determina si una entrada debe ser incluida o no en el iterator resultante. startIntegeríndice de comienzo en del iterator definido en el source
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Las data tags se utiliza para manipular o crear datos, como los bean o mensajes i18n. La lista de data tags es: a action bean date debug i18n include param property push set text url
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag a Esta tag presenta un enlace HTML (anchor). Puede aceptar todos los atributos que el elemento HTML Atributos No dispone de atributos propios Ejemplo Enlace
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag action El tag action se utiliza para executar un Action y su Result, además añade los parámetros del Action al Context Map del Value Stack Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción name*Stringnombre del Action a ser invocado namespaceStringnamespace del Action executeResultBooleanfalseindica si el resultado del Result debe ser mostrado flushBooleantrueindica si el writer debe realizar un flush al final del Action ignoreContextParamsBooleanfalseindica si los parámetros de la petición deben ser incluidos cuando se invoca al Action varStringvariable que referencia al Action añadido al Context Map
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag bean El tab bean crea un JavaBean y lo almacena en el Context Map del Value Stack. Este tag es similar en funcionalidad al tag de JSP Atributos Ejemplo 30º C = º F Atributo Tipo DatoValor Defecto Descripción name*Stringclase completa del JavaBean para crear varStringvariable que referencia al JavaBean añadido al Context Map
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag date El tag date formatea un objeto de tipo Java Date Atributos Ejemplo Hoy (formato original): Hoy (mm//dd/yyyy): Hoy (MMM d, yyyy): Atributo Tipo DatoValor Defecto Descripción name*Stringvalor fecha a formatear formatStringpatrón formato fecha niceBooleanfalseindica si aplicar un formato bonito varStringvariable que referencia a la fecha formateada añadido al Value Stack
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag debug El tag debug devuelve el contenido del Value Stack y otros objetos. Atributos No dispone de atributos propios Ejemplo
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag i18n El tag i18n permite obtener un recurso de mensajes y almacenarlo en el Value Stack para poder utilizarlos Atributos Ejemplo Entre las etiquetas i18n se puede acceder a los mensajes de mensajes.properties. Atributo Tipo DatoValor Defecto Descripción name*Stringnombre del recursos de mensajes a utilizar (ej. ejercicio/capitulo3/Persona/resourc eBundle)
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag include El tag include muestra la salida de un Servlet o un JSP Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción value*Stringel Servlet/JSP para incluir su respuesta NOTA: Los parámetros ( ) son pasados como request parameters, por lo que hay que utilizar la notación EL ${param.ParamName} para visualizarlos. No utilizar el tag para acceder a los parámetros.
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag param El tag param se utiliza para pasar parámetros al tag en el que esté incluido Atributos Ejemplo El valor del atributo value, siempre se evalua como una expresión OGNL incluso si no sin los delimitadores % {}. //las siguientes asignaciones al parámetro nombre son iguales Para poder utilizar expresiones EL de JSP o texto, hay que definir el valor entre los delimitadores del tag. ${header.nombre} Nombre del usuario en texto Atributo Tipo DatoValor Defecto Descripción name*Stringnombre del parámetro valueStringvalor del parámetro
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag property Este tar permite crear un sublista de un objeto iterator. Atributos Ejemplo Atributo Tipo DatoValor Defecto Descripción valueString valor para ser mostrado escapeBooleantruelos caracteres HTML son escapados defaultStringvalor por defecto si el valor de value es null
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag push El tag push es similar al tag set. La diferencia es que el tag push, coloca un objeto en el Value Stack, no en el Context Map. Otra carácteristica única del tag push es que el objeto estará disponible en el Value Stack solo entre las tags de apertura y cierre de push. Atributos Ejemplo Usuario ID: Nombre: Atributo Tipo DatoValor Defecto Descripción value*Stringvalor para ser colocado en el Value Stack
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag set El tag set crea un elemento clave/valor en uno de los siguientes contextos: el Context Map del Value Stack el session map el application map el request map el page map Atributos Ejemplo Nombre: Atributo Tipo DatoValor Defecto Descripción nameStringla clave del atributo a crear valueStringobjeto a ser referenciado por la clave scopeStringdefaultel ambito donde obtener la variable, su valor puede ser: application, sessio, request, page o default
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag text El tag text muestra un mensaje al usuario en función de su idioma (i18n). El mensaje debe estar en el archivo de recursos de mensajes del mismo nombre que el action que está asociado. Si no se encuentra la propiedad el mensaje, entonces se utilizará por defecto el texto que se encuentre en contenido entre las etiquetas text Atributos Ejemplo //El recurso de mensajes contiene la siguiente linea mensaje.buscar=Mensaje Buscar {0} Texto por defecto si no se encuentra la clave “mensaje.buscar” Parámetro Atributo Tipo DatoValor Defecto Descripción name*Stringclave del mensaje a mostrar searchValueStackBooleantruebuscar en el Value Stack si no se encuentra la clave del mensaje varStringreferencia del texto obtenido mediante el tag
GENERIC TAGSCURSO STRUTS 2 DATA TAGS Tag url Este tag crea una URL dinámicamente. Atributos Ejemplo <s:url var=”urlLogin” action=”login” namespace=”/secure” scheme=”https” includeParams=”true”/> Atributo Tipo DatoValor Defecto Descripción actionStringel action que la URL apuntará anchorStringanchor para crear la URL encodeBooleantruindica si codifica los parámetros escapeAmpBooleantrueindica si debe escaper el carácter ampersnd & includeContextBooleantrueindica si el contexto actual debe ser incluido includeParamsStringgetpuede ser uno de estos tipos: one, get, all methodStringel método del action namespaceStringel namespace del action portletModeStringmodo portlet schemeStringhttp, https, ftp valueStringel valor del destino si no se usa para un action windowStateStringpara uso de portlets, especifica el estado de la ventana varStringreferencia de la url creada mediante el tag
GENERIC TAGSCURSO STRUTS 2 RECUERDA QUE… Completado el apartado Generic Tags debemos recordar los siguientes conceptos estudiados: DefiniciónTipos ¿Qué son las Generic Tags? Las Generic Tags de Struts 2 es una librería de etiquetas, que son utilizadas para el control de las páginas cuando la Vista es procesada, permitiendo labores de procesamiento sobre los datos. Taglib Tipos de UI Tags Las UI tags se pueden dividir en dos grupos en función de su cometido: Control Tags Utilizadas para controlar el flujo en la Vista. append else elseIf generator if iterator merge sort subset Data Tags Utilizadas para manipular o crear datos a action bean date debug i18n include param property push set text url