Los que pueden no sólo ha sido con Grails aplicaciones Web basadas en Java, utiliza el esperado JSP taglib DisplayTag ser un nombre familiar.
DisplayTag sin barbillas grandes tablas en las páginas de servidor Java en varias páginas (paging), grupo clase, y la exportación a Excel, CSV, XML y PDF.
Grails contó con el apoyo "de la caja" sólo la paginación y el tiempo no usamos librerías de etiquetas JSP en Grails, por lo que podría asignar la funcionalidad restante ya sea a través de plugins o incluso tuvieron que echar una mano.
Desde Grails 1.1, esta restricción se ha levantado y se combinan los dos, la prueba ha sido completada con éxito. Sólo la entrada de blog sobre él es, ya que incluso en mi lista de tareas pendientes. Pero lo bueno va a salir a las (espero
).
Los siguientes pasos son necesarios para integrar DisplayTag en Grails:
libs
En primer lugar, las bibliotecas deben ser DisplayTag junto al controlador de base de copiar en el directorio lib.

DisplayTag archivo de configuración
El archivo de configuración de DisplayTag displaytag.properties estar bajo src/java que se creará. La estructura de este archivo está en el documento descrito por DisplayTag. Por mi Grum proyecto, la configuración es la siguiente:
A
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| csv excel xml pdf exportación. csv excel xml = pdf
true exportación. Excel = true
true exportación. csv = true
true exportación. xml = true
true exportación. pdf = true
= org. displaytag . export . excel . DefaultHssfExportView exportación. Excel. class = org. DisplayTag. exportación. Excel. DefaultHssfExportView
= org. displaytag . export . DefaultPdfExportView exportación. pdf. class = org. DisplayTag. exportación. DefaultPdfExportView
= org. displaytag . export . DefaultRtfExportView exportación. rtf. class = org. DisplayTag. exportación. DefaultRtfExportView
div class = "exportlinks" > Export to : { 0 } </ div > bandera de exportación = class = <div "export-left"> Exportar a. {0} </ div>
list exportar. = importe lista de
= bottom paginación. bandera. la colocación inferior =
= No data found. básica. msg. empty_list = No se han encontrado datos.
. empty_list_row =< tr class = "empty" >< td colspan = "0" > No data found. </ td ></ tr ></ tr > básica. msg. empty_list_row <tr = class = "empty"> <td colspan = "0"> No se encontraron datos. </ td> </ tr> </ tr>
=< span class = "pagelinks" >< a href = "{1}" >< strong >& lt ;& lt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{2}" >< strong >& lt ;</ strong ></ a >& nbsp ; { 0 } & nbsp ;< a href = "{3}" >< strong >& gt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{4}" >< strong >& gt ;& gt ;</ strong ></ a ></ span > bandera de paginación total = <span class = "page left"> <a href = "{1}"> <strong> & lt; .. & lt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{2}"> <strong> & lt; gt <a href = "{3}"> <strong> y;; </ strong> </ a> & nbsp; {0} & nbsp < / strong> </ a> & nbsp; & nbsp; & nbsp; <a href = gt "{4}"> <strong> &; & gt; </ strong> </ a> </ span>
=< span class = "pagelinks" > { 0 } & nbsp ;< a href = "{3}" >< strong >& gt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{4}" >< strong >& gt ;& gt ;</ strong ></ a ></ span > paginación primera bandera = <span class = "page left"> {0} & nbsp; .. <a href = "{3}"> <strong> & gt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{4}"> <strong> & gt; & gt; </ strong> </ a> </ span>
=< span class = "pagelinks" >< a href = "{1}" >< strong >& lt ;& lt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{2}" >< strong >& lt ;</ strong ></ a >& nbsp ; { 0 } </ span > bandera de paginación última = <span class = "page left"> <a href = "{1}"> <strong> & lt; .. & lt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{2}"> <strong> & lt; </ strong> </ a> & nbsp; {0} </ span>
=< span class = "pagebanner" > 1 Record found. Seite : </ span > bandera de paginación one_item_found = <span class = "banner page"> página 1 registro encontrado ... </ span>
=< span class = "pagebanner" > { 0 } Records found. Seite : </ span > paginación bandera all_items_found = <span class = "banner page"> {0} registra encontradas Página: ... </ span>
=< span class = "pagebanner" > { 0 } Records found, show { 2 } - { 3 } . </ span >< br />< br /> paginación bandera some_items_found = <span class = "banner page"> {0} registra encontrados, se muestran {2} - {3} ... </ span> <br /> <br /> |
DisplayTag envoltorio
Los enlaces dinámicos y el formato que se ejecutará en el patrón Decorator en DisplayTag. El decorador se implementa en una clase contenedora que es, por supuesto, escrito en Groovy Grails. Mi aplicación es la clase DisplaytagWrapper que creó el proyecto de Grum un enlace a los datos del usuario y formatos de la fecha de la creación.
A
2
3
4
5
6
7
8
9
10
11
12
13
14
| paquete de de.koo.grum.groovy.util
; org.displaytag.decorator.TableDecorator importación;
TableDecorator { public class TableDecorator DisplaytagWrapper {
Cadena getLinkToUser () {
def user = getCurrentRowObject ()
/grum/user/show/${user.id} \" >${user.username}</a>" ; retorno "<a href= \" /grum/user/show/${user.id} \"> $ {} user.username </ a>";
}
Cadena getUserCreatedAt () {
def user = getCurrentRowObject ()
. format ( "dd.MM.yyyy HH:mm" ) ; usuario createdAt formato de devolución ("AAAA HH: MM") ..
}
} |
Filtros de exportación
Establecer la hora de exportar a un formato que no sea HTML, el tipo de contenido de la respuesta al navegador. Para evitar que esto causa problemas, el filtro debe ser definido en el archivo web.xml, que contrarresta los posibles errores. DisplayTag trae la respuesta de anulación clase de filtro ya es una aplicación para con él.
Para Grails en los cambios en el web.xml que usted hace, las plantillas se deben instalar:
Luego está el web.xml en el directorio src/templates/war . Para filtrar las entradas siguientes son necesarios.
A
2
3
4
5
6
7
8
| <filter>
<filter-name> anulación de respuesta del filtro </ filter-name>
<filter-class> org.displaytag.filter.ResponseOverrideFilter </ filter-class>
</ Filtro>
<filter-mapping>
<filter-name> anulación de respuesta del filtro </ filter-name>
<url-pattern> / * </ url-pattern>
</ Filter-mapping> |
Integración con el Servidor de páginas Groovy
Si ha completado todos estos pasos preparatorios, que finalmente es capaz de bajar a la utilización de DisplayTag en una página de servidor Groovy.
En mi ejemplo, los usuarios / list.gsp todos los datos del usuario se mostrará en forma de tabla. La mesa es el atributo sortable pueden ordenar por nombre y apellido (sin acceso a nueva base de datos) y, cuando el pagesize del atributo partialList repartidas en varias páginas.
A
2
3
4
5
6
7
8
9
10
11
12
13
| = "display" % > <% @ Taglib uri = "http://displaytag.sf.net" prefix = "display"%>
<html>
..
defaultsort = "1" partialList = "true" <Pantalla: nombre de la tabla = "lista de usuarios" DefaultSort = "1" partialList = "true"
decoradora = "de.koo.grum.groovy.util.DisplaytagWrapper"
= "${pageSize}" requestURI = "/grum/user/list" size = "$ {} tamaño de resultado" pageSize = "$ {} tamaño de página" requestUri = "/ Grum / usuario / listado"
= "0" cellspacing = "0" sort = "list" > class = "lista" cellpadding = "0" cellspacing = "0" sort = "lista">
title = "Userame" /> <display:column property = title = "linkToUser" "Userame" />
title = "Firstame" sortable = "true" /> <display:column property = title = "firstname" "Firstame" ordenar = "true" />
title = "Lastname" sortable = "true" /> <display:column property = title = "lastname" "Lastname" ordenar = "true" />
title = "Created At" sortable = "true" /> <display:column property = title = "userCreatedAt" "Created At" ordenar = "true" />
</ Display: table>
... |
Atributos adicionales ( export , group ) puede, como en el ejemplo los datos de contacto o list.gsp también exportar a diferentes formatos de salida y una serie de entradas se alcanzan.
A
2
3
4
5
6
7
8
9
10
11
12
13
14
| export = "true" defaultsort = "1" partialList = "true" <Pantalla: nombre de la tabla = "lista de contactos de los datos" de exportación = "true" DefaultSort = "1" partialList = "true"
decoradora = "de.koo.grum.groovy.util.DisplaytagWrapper"
= "${pageSize}" requestURI = "/grum/contactData/list" size = "$ {} tamaño de resultado" pageSize = "$ {}" RequestUri tamaño de página = "/ Grum / o datos de contacto de la lista"
= "0" cellspacing = "0" sort = "list" > class = "lista" cellpadding = "0" cellspacing = "0" sort = "lista">
value = "contactData.csv" /> nombre = valor = <display:setProperty "export.csv.filename" "contactData.csv" />
value = "contactData.xls" /> nombre = valor = <display:setProperty "export.excel.filename" "contactData.xls" />
value = "contactData.xml" /> nombre = valor = <display:setProperty "export.xml.filename" "contactData.xml" />
value = "contactData.pdf" /> nombre = valor = <display:setProperty "export.pdf.filename" "contactData.pdf" />
value = "list" /> nombre = valor = <display:setProperty "export.amount" "list" />
title = "Name" sortable = "true" group = "1" /> <display:column property = title = "linkContactDataToUser" "Name" ordenar = grupo = "true" "1" />
title = "type" sortable = "true" /> <display:column property = title = "type" "type" ordenar = "true" />
sortable = "true" /> <display:column property = "data" ordenar = "true" />
</ Display: table> |
Conclusión:
Una vez configurado DisplayTag uno de los mayores soluciones para aplicaciones Web basadas en Java que se mostrarán en datos tabulares. La funcionalidad supera con creces la funcionalidad estándar de Grails. La combinación de Grails y DisplayTag voy a recomendar a nadie.
Enlaces:
Grum fuente
Los que pueden no sólo ha sido con Grails aplicaciones Web basadas en Java, utiliza el JSP taglib DisplayTag probable que sea un nombre familiar. DisplayTag sin barbillas grandes tablas en Java ...
gklinkmann escrito por \ \ tags: Grails , Groovy , Java , Open Source