22 de marzo

Tengo pocas horas de usar mi Google Code alojado en proyectos Grum sobre el estado de las cosas (se trataba efectivamente era hora). Grum es una aplicación Grails poco para la gestión de usuarios, lo que me permite con el framework web Grails a "el juego.

Soy consciente de la aplicación de la Grails muchos plugins excepciones a fin de contar con pocos efectos secundarios como sea posible y mantenerla incluso para aquellos que simplemente buscan una introducción a Grails. Por lo tanto, incluidas en las soluciones Grum, como un:

  • acceso a una base de datos Mysql a cabo
  • 1:1, 1: N y N: m Gorm modelo de relaciones
  • propios días escribe Librerias
  • JSP Tag Lib DisplayTag utiliza para mostrar la página de datos por página, para agrupar, ordenar, y en todos los formatos posibles (excel, csv, xml, pdf) para exportar
  • permite la carga de archivos
  • pruebas funcionales con el plugin webtest utilizados
  • y la entrega de XML basado en (URL específica de negociación de contenidos breves) para implementar

La nueva versión 0.3 ahora utiliza el plugin webtest griales 1.2.1 y en la versión 2.0.3. Las fuentes , los archivos de SQL para crear la base de datos MySQL y un archivo web con todas las bibliotecas estén disponibles en Google Code para descargar listo.

Nutztungshinweise:
El código puede ser libremente utilizado, pero puede contener errores, por lo que no asumen ninguna responsabilidad. La licencia de las bibliotecas debe ser observado.

artículos similares:

Publicado por gklinkmann \ \ tags: , , , ,

05 de marzo

Si usted no es sólo a partir de Grails con aplicaciones Web basadas en Java, JSP emplea la espera Taglib DisplayTag ser un término.

DisplayTag sin grandes mesas tire en Java Server Pages de dividir varias páginas (paginación), una especie de, al grupo y, CSV, XML y la exportación de PDF a Excel.
Grails contó con el apoyo "de la caja" sólo de paginación y la hora larga que no usamos JSP Tag libs en Grails, de modo que se podría asignar el resto de funciones ya sea a través de plugins o incluso tuvo que darle una mano.

Desde Grails 1.1 Esta restricción se levantó y ahora los dos se unen la prueba ha sido completada con éxito. Sólo la entrada de blog sobre él es ya que el sigue en mi lista de tareas pendientes. Pero, ¿qué vendrá a quienes hacen el bien (espero :-) ).

Los siguientes pasos son necesarios para integrar DisplayTag en Grails:

libs

En primer lugar, las bibliotecas son DisplayTag junto a los controladores de base de datos copiados en el directorio lib.

DisplayTag archivo de configuración

El archivo de configuración de DisplayTag displaytag.properties debe ser inferior a src/java que se creará. La estructura de este archivo está en el documento DisplayTag descrito. Por mi Grum proyecto es la configuración de esta manera:

  1
 2
 3
 4
 5
 6
 7:00
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
  csv excel xml pdf la exportación. csv excel pdf tipos xml =
 true la exportación. excel = true
 true la exportación. csv = true
 true la exportación. xml = true
 true la exportación. pdf = true
 = org. displaytag . export . excel . DefaultHssfExportView la exportación. excel. org = clase. DisplayTag. exportación. excel. DefaultHssfExportView
 = org. displaytag . export . DefaultPdfExportView de exportación de clase .. pdf = org. DisplayTag. exportación. DefaultPdfExportView
 = org. displaytag . export . DefaultRtfExportView la exportación. rtf. org = clase. DisplayTag. exportación. DefaultRtfExportView
 div class = "exportlinks" > Export to : { 0 } </ div > la exportación. banner = class = <div "export left"> Exportar a: (0) </ div>
 list la exportación. = cantidad lista
 = bottom paginación. banner. = fondo de colocación
 = No data found. de base. msg. empty_list = No se han encontrado datos.
 . empty_list_row =< tr class = "empty" >< td colspan = "0" > No data found. </ td ></ tr ></ tr > de base. msg. empty_list_row = class = <tr <td colspan = "empty"> "0"> No hay 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 > paginación. banner. <span completa = class = "pagelink"> <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 = "(4)"> <strong> & gt href; & 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. banner. <span primera clase = = "pagelink"> (0) & nbsp; <a href = "(3)"> <strong> &; <gt / strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "(4)"> <strong> & gt; & gt; </> </ strong> </ 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 > banner pasado. <span = clase. paginación = "pagelink"> <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 > paginación. banner. one_item_found = <span class = "pagebanner"> 1 resultado. Página: </ span>
 =< span class = "pagebanner" > { 0 } Records found. Seite : </ span > paginación. banner. all_items_found = class = <span "pagebanner"> (0) encontrados. Página: </ span>
 =< span class = "pagebanner" > { 0 } Records found, show { 2 } - { 3 } . </ span >< br />< br /> paginación. banner. some_items_found = class = <span "pagebanner"> (0) registros encontrados, se muestran (2) - (3). </ span> <br /> <br /> 

DisplayTag contenedor

Enlaces compartidas y el formato se apliquen por DisplayTag Patrón Decorador. El decorador es una clase contenedora a cabo en el curso en que está escrito en Grails Groovy. Mi aplicación es la clase DisplaytagWrapper , el proyecto Grum un enlace a los datos del usuario creado en el formato y fecha de creación.

  1
 2
 3
 4
 5
 6
 7:00
 8
 9
 10
 11
 12
 13
 14
  paquete de.koo.grum.groovy.util

 ; org.displaytag.decorator.TableDecorator importación;

 TableDecorator { clase pública se extiende DisplaytagWrapper TableDecorator (
    String GetLinkToUser () (
       getCurrentRowObject definición de usuario = ()
       /grum/user/show/${user.id} \" >${user.username}</a>" ; retorno "<a href= \" /grum/user/show/${user.id} \"> $ (user.username) </ a>";
    )
    String GetUserCreatedAt () (
       getCurrentRowObject definición de usuario = ()
       . format ( "dd.MM.yyyy HH:mm" ) ; CreateDate retorno de usuario .. formato ("dd.mm.aaaa HH: mm");
    )
 ) 

Exportación de filtros

fijar la hora de exportar a un formato HTML, el tipo de contenido para la respuesta al navegador. Para que esto no da lugar a problemas, uno debe filtrar en el archivo web.xml se puede definir, para contrarrestar los posibles errores. DisplayTag trae la clase ResponseOverrideFilter ya una implementación para con él.

Para Grails cambios en el web.xml para hacer, necesita las plantillas están instalados:

  griales instalar las plantillas 

Luego está el web.xml en el directorio src/templates/war . Para el filtro, las entradas son necesarios los siguientes.

  1
 2
 3
 4
 5
 6
 7:00
 8
  <filter>
    <filter-name> ResponseOverrideFilter </ nombre de filtro->
    org.displaytag.filter.ResponseOverrideFilter <<filter-class> / clase> Filtro
 </> Filtro
 <filter-mapping>
    <filter-name> ResponseOverrideFilter </ nombre de filtro->
    <url-pattern> / <* /-patrón url>
 </ Filtro-mapping> 

Participación en la página Servidor Groovy

Si ha realizado todos estos pasos de preparación, usted puede finalmente llegar a utilizar en una página DisplayTag Groovy Server.
En mi ejemplo, el usuario / list.gsp los datos del usuario se visualizan todos de una tabla. La tabla es el atributo sortable por nombre y apellido hace ordenable (sin acceso a un nueva base de datos) y se alcanza cuando el pagesize del atributo partialList distribuidos en varias páginas.

  1
 2
 3
 4
 5
 6
 7:00
 8
 9
 10
 11
 12
 13
  = "display" % > <% @ Taglib uri = "http://displaytag.sf.net" prefix = "display"%>  
 <html>
 ..
 defaultsort = "1" partialList = "true" > Mostrar: nombre de la tabla = "lista de usuarios" DefaultSort = "1" partialList = "true"
 decorador = "de.koo.grum.groovy.util.DisplaytagWrapper"
 = "${pageSize}" requestURI = "/grum/user/list" size = "$ (ResultSize)" PageSize = "$ (pageSize)" requestURI = "/ Grum / user / list"
 = "0" cellspacing = "0" sort = "list" > class = "lista" cellpadding = "0" cellspacing = "0" sort = "lista">
    title = "Userame" /> propiedad <display:column = "linkToUser" title = "Userame" />						
    title = "Firstame" sortable = "true" /> propiedad <display:column = "firstname" title = = "Firstame" ordenable "true" />						
    title = "Lastname" sortable = "true" /> propiedad <display:column = "lastname" title = = "Lastname" ordenable "true" />						
    title = "Created At" sortable = "true" /> propiedad <display:column = "userCreatedAt" title = "Created At" ordenable = /> "true"						
 </ Pantalla: table>
 ... 

Este conjunto de características adicionales ( export , group ) puede, como en el ejemplo datos de contacto / list.gsp también la exportación a diferentes formatos de salida y un grupo de entradas que se alcancen.

  1
 2
 3
 4
 5
 6
 7:00
 8
 9
 10
 11
 12
 13
 14
  export = "true" defaultsort = "1" partialList = "true" > Mostrar: nombre de la tabla = "contactDataList" exportación = "true" DefaultSort = "1" partialList = "true"
 decorador = "de.koo.grum.groovy.util.DisplaytagWrapper"
 = "${pageSize}" requestURI = "/grum/contactData/list" size = "$ (ResultSize)" PageSize = "$ (pageSize)" requestURI = "/ Grum / datos de contacto / list"
 = "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" /> propiedad <display:column = "linkContactDataToUser" title = "Name" ordenable grupo "true" = = "1" />						
     title = "type" sortable = "true" /> propiedad <display:column = "type" title = "type" "true" /> = ordenable
     sortable = "true" /> propiedad <display:column = = "data" ordenable "true" />
 </ Pantalla: table> 

Conclusión:
Una vez configurado DisplayTag una de las grandes soluciones para aplicaciones Web basadas en Java a los datos de tabla de la lista. La funcionalidad de este supera con creces la funcionalidad estándar de Grails. La combinación de Grails y DisplayTag lo tanto, puedo recomendar a nadie.

Enlaces:
Grum Fuente

artículos similares:

Publicado por gklinkmann \ \ tags: , , ,

Enero 2008

En silencio, ella es dahergekommen. Al igual que muchos otros proyectos Groovy (Groovy 1,7, 0,9 GPars, Gant 1,9) también apareció a tiempo para la Groovy y Grails Grails Exchange, una nueva versión. La versión final 1.2 se ha tardado mucho en llegar.

Una versión estable, que debería ser. Esa fue la razón para las versiones beta de largo y la fase RC. Sun basados Groovy 1.2, ni en la versión 1.6.7 Groovy.

Para la nueva versión ha Dierk König (autor de Groovy in Action), un detallado artículo escrito para que aquí sólo una breve lista de nuevas características siguientes:

  • dependencias declarativa para las bibliotecas dentro de las aplicaciones Grails
  • Más rápido puntos de vista - las mejoras de rendimiento para Groovy Server Pages (SPG)
  • Gorm defecto se pueden configurar
  • Consultas con nombre, que también puede servir de base para los métodos de selección el buscador dinámico
  • Expansion, lo que eh muy buen soporte para el descanso y JSON
  • la documentación para Grails otro motor no puede ser (utilizado para Grails base) las solicitudes
  • Actualización de Primavera 3
  • Fuentes finamente granular de datos configurable
  • mayor apoyo a las entidades anotado
  • Tomcat como contenedor servlet por defecto. Otros contenedor de servlets como embarcadero también se apoya.

La lista completa de cambios que puede en el registro de cambios y notas de la versión leer.

Grails 1.2 se encuentra en la página del proyecto para descargar listo. Grails es suficiente para las aplicaciones existentes, como siempre

  griales de actualización 

El salto de la versión 1,1 a 1,2 no es tan grande como la de la versión 1,0 a 1,1. Por tanto, ahora son sólo algunos problemas conocidos.

artículos similares:

Publicado por gklinkmann \ \ tags: , , ,

27 de diciembre

canoo webtest Report

El sobre Groovy basadas en la Web-marco Grails en el mundo Java permite el desarrollo rápido de aplicaciones web. La velocidad que usted pagó, pero no a costa de sacrificar las pruebas. Por el contrario.

La canoa - Web pruebas Las pruebas se escriben Plugin tan pronto como la propia demanda (que en mi opinión la única manera de que el promotor de prueba para sabroso).

Para instalar una bastante simple:

  Grails> install-plugin webtest 

Y con:

  1
 2
 3
 4
 5
 6
 7:00
  Grails> crear-webtest
 WebTest nombre no se especifica.  Por favor, introduzca:
 <nombre-dominio>
      Copying 1 file to < pfad zur Grails App > [Copiar] copiar un archivo en <ruta a Grails App>
      Copying 1 file to </ pfad >< pfad zur Grails App >/ webtest / tests [Copy] Copiar un archivo </ ruta <ruta> para Grails App> / webtest / pruebas
 domain -name > Test.groovy Web de prueba generados en webtest / tests / Test.groovy <nombre-dominio>
 pfad ></ domain > </ Dominio> </ path> </> de dominio 

que creó su primera prueba para una clase de Grails dominio. Todas las pruebas son de forma predeterminada en /webtest/tests almacenados. Una prueba generados podría tener este aspecto:
Continuar leyendo »

artículos similares:

Publicado por gklinkmann \ \ tags: , , , ,

29 de noviembre

grailspodcast logo

Uno de los más importantes recursos cuando se trata de Groovy y Grails es, en mi opinión, el podcast Grails por Sven y Haiges y Smith Glen.

El podcast que dos semanas en el idioma Inglés es todo, ahora tiene la consecuencia de 100 llegó.
Todo lo mejor de mi parte a este evento y muchas gracias por la información y noticias de muchos de los últimos años sobre los temas de Groovy y Grails.

Sigue.

artículos similares:

Publicado por gklinkmann \ \ tags: , , , ,