2011-01-11 9 views
5

Estoy tratando de obtener una consulta de Criteria para exportar a CSV, Excel, ¿qué tienes? El problema al que me estoy enfrentando es que el código de categorías se ejecuta limpiamente (como en, no arroja ningún error), pero no genera ningún dato. Sé con certeza que data es una ArrayList of List. ¿Alguien tiene una solución para esto o me dices si estoy haciendo algo mal?¿Cómo consigo que el complemento Grails Export funcione correctamente con consultas de criterios?

Aquí es mi dominio del objeto:

class Machine { 
    String name, 
      category 
    // constraints, etc 
} 

Aquí está mi acción del controlador (tomada en su mayoría de la plugin page):

def categories = { 
    if(params?.format && params.format != "html"){ 
response.contentType = ConfigurationHolder.config.grails.mime.types[params.format] 
response.setHeader("Content-disposition", "attachment; filename=categories.${params.extension}") 

    def data = Machine.createCriteria().list { 
     projections { 
      groupProperty("category") 
      countDistinct("id") 
     } 
    } 

    exportService.export(params.format, response.outputStream, data, [:], [:]) 
} 
+0

¿Realmente se realiza la instrucción "if"? –

+0

Sí, pero debe verificar el tipo de contenido. Olvidé la opción exacta que se debe cambiar a verdadera en el archivo Config.groovy. – Pat

Respuesta

3

Aquí hay una posible solución que pensé en cuanto me presenté a la pregunta : Expando. Aquí están los cambios en el método de control:

// response stuff above 
def fields = ["category", "count"] 
def labels = ["category": "Category", "count": "# of machines" ] 

def data = Machine.createCriteria().list { 
    projections { 
     groupProperty("category") 
     countDistinct("id") 
    } 
}.collect { l -> new Expando("category": l[0], "count": l[1]) } 

exportService.export(params.format, response.outputStream, data, fields, labels, [:], [:]) 

estoy aprovechando el hecho de que el plug-in de exportación trata de obtener un valor a partir de un objeto. Entonces, le doy un objeto.

Si hay una solución mejor, estaré más que feliz de verla.

+0

Expendo no funciona en Grails 3.1 y superior y exporta el plugin excel-export: 2.1 –

Cuestiones relacionadas