DisplayTag: Exportando nuestras tablas

En post anteriores hemos mostrado las ventajas del uso de DisplayTag como así también los primeros pasos en el uso del mismo, ahora muchas veces se nos plantea que la tabla que estamos mostrando por pantalla la necesitamos exportar ya se de manera total (todos los registros) o parcial (solo la pantalla que estamos viendo) y a eso le debemos sumar que también se nos puede pedir que lo mismo sea posible en varios formatos (csv, word, xml, etc).

Todas estas situaciones ya las tiene resueltas DisplayTag, ademas nos permite crear nuestras propias clases para realizar la exportación de una manera custom.

Al igual que en post anteriores veamos como funciona por medio de ejemplos, para ello tomemos como código inicial el siguiente:

Veamos como se muestra actualmente la tabla que queremos exportar en la pantalla:

DisplayTag estilos

¿Como puedo exportar la tabla?

A la hora de exportar una tabla con DisplayTag existen varias cosas a tener en cuenta como ser si se quiere exportar toda la tabla o una parte de ella y en que formatos.

Antes que nada debemos colocarle a cada una de nuestras tablas el atributo export en true para indicarle que esa tabla puede ser exportada (eso no indica en que formatos solo nos indica que si se han configurado correctamente los tipos de archivos a generar nos aparecera una barra para realizar esa tarea). Veamos como queda el código con esa modificación:

Si no realizamos ninguna otra modificación mas que agregar ese atributo DisplayTag tomara la configuración por default que trae internamente por lo cual nos permitirá exportar a CSV, Excel, XML. Algo a tener en cuenta es que los nombres de los archivos verán que es el mismo que el del action de Struts por ejemplo, esto se debe a que en la configuración por default no hay especificado ningún nombre.

Veamos como queda visualmente nuestra tabla luego de las modificaciones:

DisplayTag-Exportacion

Ahora bien si queremos indicar cuales son los formatos de exportación validos y un nombre genérico para los archivos lo debemos hacer dentro del archivo display.properties donde existirá las siguientes propiedades:

Algo a tener en cuenta es que se pueden modificar las propiedades de exportación del Excel, XML, rtf con tanto solo copiar el bloque de propiedades del csv y cambiar parte del prefijo por el del formato que se quiera cambiar.

Ahora bien esto es una buena opción pero nos modifica todas las tablas a nivel global, que pasa si para una tabla en particular debemos exportar nuestra tabla en PDF pero no el resto. Para esta situación es que DisplayTag ha creado un tag (display:setProperty)para colocar dentro de la tabla y sobreescribir en tiempo de ejecución la configuración.

De esta forma el cambio es solo visible en esta pagina y para esta tabla en particular, notese que las propiedades a son las mismas que se encuentran en el archivo display.properties.

¿Como puedo exportar parcialmente una tabla?

Una vez que tenemos todo listo y podemos exportar nuestra tabla en el formato correspondiente quizás necesitemos solo una parte de la información que se muestra y no toda para ello DisplayTag nos provee dos atributos para solucionar este problema: uno partialList  que nos indica si queremos hacer una exportación parcial de la misma y el otro size que nos indica el tamaño total de la tabla (la cantidad de elementos) este ultimo es imprescindible que sea el mismo que la cantidad de elementos que existen en toda la tabla ya que sino nos mostrara menos paginas de las que en realidad tiene.

Veamos como queda el código con las modificaciones correspondientes:

Una aclaración sobre el código, como se ve el atributo size tiene puesto a mano la cantidad de elementos totales de la tabla esto debería ser una propiedad del action de Struts y debería contener en su interior el valor correspondiente.

¿Como creo una clase custom para exportar la tabla?

A la hora de exportar la tabla quizás queremos modificar ciertos valores o el formato de los mismos para esto DisplayTag nos posibilita cambiar la implementacion por default que utiliza para realizar tal modificación, dentro de nuestro archivo display.properties tendremos lo siguiente:

Estas propiedades hacen referencia a las clases por default (no se preocupen si no las tienen ya que si no están la librería tomara los valores por default que son estos mismos), para poder modificar la implementacion basta con crear una clase que extienda de xxxView o en su defecto de BaseExportView.

Por ultimo al igual que en el resto de los post dejamos en este link el código fuente para que puedan probar sobre un ejemplo funcionando.

Conclusion

Como hemos visto DisplayTag nos permite la exportación de nuestras tablas de manera general (usando las clases que ya nos provee para hacerlo) o de manera custom donde podemos crear nuestra propia clase y agregarle la lógica necesaria por lo cual es una buena opción para mostrar nuestras tablas.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *