0% encontró este documento útil (0 votos)
1K vistas28 páginas

Guía de uso de Display Tag 1.1

DisplayTag es una librería de etiquetas personalizadas open source que permite generar tablas dinámicas a partir de objetos en Java. Permite ordenar, paginar y exportar datos a diferentes formatos. Los desarrolladores pueden decorar objetos y columnas para personalizar el formato de los datos y agregar enlaces. La librería también ofrece soporte para internacionalización, trabajar con listas parciales y encargarse del ordenamiento y paginado de manera externa.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas28 páginas

Guía de uso de Display Tag 1.1

DisplayTag es una librería de etiquetas personalizadas open source que permite generar tablas dinámicas a partir de objetos en Java. Permite ordenar, paginar y exportar datos a diferentes formatos. Los desarrolladores pueden decorar objetos y columnas para personalizar el formato de los datos y agregar enlaces. La librería también ofrece soporte para internacionalización, trabajar con listas parciales y encargarse del ordenamiento y paginado de manera externa.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Display tag library 1.

A/C Jose Costa [Link]@[Link] Ing. Martn Cabrera [Link]@[Link] moove-iT

Motivacin
Los custom tags simplifican el desarrollo y el mantenimiento de las JSP. Permiten entre otras funcionalidades:
realizar operaciones sobre objetos procesar formularios acceder bases de datos y otros servicios empresariales como e-mail y directorios realizar control de flujo

Display tag
Proyecto open source de custom tags Se encuentra en la versin 1.1 En la actualidad solo permite desplegar tablas Dada una lista de objetos permite crear una tabla donde se podr ordenar por columnas, paginar, exportar en distintos formatos, decorar y otras funcionalidades.

Uso bsico
Sin especificar columnas:
<% [Link]( "test", new TestList(10, false) ); %> <display:table name="test" />

Especificando columnas:
<% [Link]( "test", new TestList(10, false) ); %> <display:table name="test"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column property="email" /> <display:column property="status" /> <display:column property="description" title="Comments"/> </display:table>

Objetos implcitos
<display:table name="test" id="testit"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column title="static value">static</display:column> <display:column title=Row"> <%=[Link]("testit_rowNum")%> </display:column> <display:column title=Money> <%=((ListObject)[Link]("testit")).getMoney()%> </display:column> </display:table>

Fuentes de datos
Hasta ahora:
<% [Link]( "test", new TestList( 10 ) ); %>

<display:table name="test">

Se puede definir el alcance del bean agregando alguno de los siguientes sufijos:
pageScope requestScope (default) sessionScope applicationScope

Fuentes de datos
Tambin es posible acceder a las propiedades de un JavaBean con la sintaxis .property Las propiedades mapeadas se acceden especificando la clave entre () y las propiedades indexadas utilizando []
[Link](name).item[1]

Es equivalente a:
[Link](list).getValue().getAttribute(name).getItem(1)

Tipos de datos soportados


El custom tag <display:table> soporta los siguentes tipos de objetos:
Collection Enumeration Map Dictionary Array Iterator cualquier Object con el mtodo iterator()

El resto de los objetos se despliegan en una sola fila.

Decorators
Un "decorator" es un patrn de diseo donde un objeto provee una capa de funcionalidad encapsulando o decorando otro objeto Utilizado comnmente para controlar la forma en que se despliegan propiedades que no retornan un String nativo (fechas, nmeros, monedas, etc..) No es una buena prctica colocar la lgica del formateo dentro del propio objeto

Table Decorator
<display:table name="test" decorator="[Link]" > <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> <display:column property="date" /> <display:column property="money" /> </display:table> Funcionamiento:
Un nico objeto decorator es creado antes de que el tag table comienze a iterar dentro de la lista. Antes de procesar una fila en particular, le da el objeto de esa fila al decorator. Las propiedades son llamadas sobre el decorator y si no se encuentran all entonces se llaman directamente sobre el objeto original.

Tips:
La clase Wrapper tiene que ser subclase de TableDecorator getCurrentRowObject() retorna el objeto correspondiente a la fila que se est evaluando.

Column Decorator
<display:table name="test"> <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> <display:column property="date"decorator= "[Link]" /> </display:table>

Links
Smart linking
Si una columna tiene una direccin de e-mail o una URL a una web, se puede setear la propiedad autolink=true en el tag display:column, y automticamente se convertir en un link en la pgina.

Dynamic links
Al estilo struts Utilizando decorators

Links al estilo struts


Las columnas cuentan con 5 atributos similares a los de struts:
href
la URL base para construir el link

paramId
el nombre del parmetro que se agrega a la URL

paramName
nombre del bean del cual se quiere obtener una propiedad para obtener el valor del parmetro a agregar (tipicamente null para indicar que el bean se obtiene de la lista)

paramProperty
propiedad a invocar sobre el bean para obtener el valor

paramScope
alcance especfico donde se encuentra el bean, tipicamente null

Links utilizando decorators


Los decorators tambin pueden ser utlizados para generar cualquier elemento HTML dentro de una columna. En este caso podemos crear un String que contenga un link HTML, tomando alguna propiedad de los elementos de la lista.

Agregando estilos a las tablas


Atributos HTML
Dentro de los tags <display:table> y <display:column> puede utilizarse cualquier atributo estndar estricto de html (style, class, cellspacing, cellpading)

CSS
Automticamente se agregan clases css a las filas/celdas de la tabla Fcilmente puede customizarse el estilo cambiando la clase adecuada en la hoja de estilos asociada

Exportando datos
Seteando el atributo export=true aparecer un footer con la posibilidad de exportar la tabla en diversos formatos. Los formatos predefinidos son CSV, Excel, XML y PDF

Agregando otros formatos


La nueva clase que se defina debe implementar alguna de las siguientes interfaces:
[Link] [Link]

Incluir si no existe el archivo [Link] en el classpath y agregar el nombre del nuevo tipo con los tipos ya existentes ([Link] =csv excel xml [miexport] )

Agregando otros formatos


En el archivo [Link] deber incluirse: export.[miexport]=true export.[miexport].class=[Link] export.[miexport].label=Click aqu para probar este formato export view export.[miexport].include_header=true # si se setea el siguiente parametro el archivo es bajado en vez de abrirse en la ventana del navegador export.[miexport].filename=

Filtro para la exportacin


Cuando se exporta en cualquier formato no-html, se debe cambiar el content type retornado al browser No siempre es posible
Ya se escribieron demasiados caracteres en el response, entonces el buffer se llen y automticamente se hizo flush sobre el response Algo antes del diplay:table hizo flush explcitamente de el response La pgina se incluye dinmicamente dentro de otra (Struts tiles) Cuando se exportan datos binarios que no son soportados por las jsps (pdf)

Filtro para la exportacin


Podemos sacar provecho de los filtros para resolver el problema Displaytag viene con un filtro que en conjunto con el tag table durante la exportacin, deshabilita la posibilidad de hacer flush sobre el response una vez que se requiri una exportacin

Instalando el filtro
En el [Link]
<filter> <filter-name>ResponseOverrideFilter</filter-name> <filter-class> [Link] </filter-class> </filter>

Agregar los mappings para las pginas que se van a interceptar


<filter-mapping> <filter-name>ResponseOverrideFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ResponseOverrideFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>

I18n - Internacionalizacin
Displaytag soporta i18n para los textos utilizados para los cabezales de columnas y secciones de exportacin y paginado Utilizando el archivo [Link] podemos modificar los textos Para soportar varios lenguajes al mismo tiempo pueden agregarse archivos llamados displaytag_LANGUAGE.properties para cada lenguaje. Por ejemplo: displaytag_ES.properties

Paginado y ordenamiento externo


Por defecto displaytag trabaja con la lista completa de objetos y maneja de forma transparente el ordenamiento y el paginado A veces puede ser necesario encargarse del ordenamiento y el paginado uno mismo (lista parcial)

Trabajar con listas parciales


Utilizando el patrn Valuelist
Requiere que el objeto que se pasa al displaytag implemente la interfaz [Link] El objeto puede pasarse como una lista comn, y se extraer la informacin de paginado y ordenamiento de el

Sin implementar la interfaz PaginatedList

Patrn Valuelist
Si el objeto pasado como una lista a displaytag es en realidad una instancia de [Link] y no una coleccin Displaytag asume que la lista est ordenada y paginada externamente

Sin implementar la interfaz PaginatedList


Ordenamiento Externo
<display:table name="testList" sort="external" defaultsort="1" id="element"> <display:column property="id" title="ID" sortable="true" sortName="id" /> <display:column property="firstName" sortable="true" sortName="firstName" title="First Name" /> <display:column property="lastName" sortable="true" sortName="lastName" title="Last Name" /> <display:column property="address" sortable="true" sortName="address" title="Email Address"/> </display:table>

Ordenamiento Externo con Paginado


<display:table name="testList" sort="external" defaultsort="1" pagesize="20" id="element" partialList="true" size="resultSize"> <display:column property="id" title="ID" sortable="true" sortName="id" /> <display:column property="firstName" sortable="true" sortName="firstName" title="First Name" /> <display:column property="lastName" sortable="true" sortName="lastName" title="Last Name" /> <display:column property="address" sortable="true" sortName="address" title="Email Address"/> </display:table>

Referencias
Display Tag Library Overview
[Link]

Preguntas?

También podría gustarte