2011-01-11 12 views
5

Sto cercando di ottenere una query di criteri da esportare in CSV, Excel, cos'hai. Il problema che sto incontrando è che il codice delle categorie viene eseguito in modo pulito (come in, non genera alcun errore), ma non genera alcun dato. So per certo che data è un elenco di liste di Array. Qualcuno ha una soluzione per questo, o dimmi se sto facendo qualcosa di sbagliato?Come faccio a far funzionare correttamente il plugin per l'esportazione di Grails con le query sui criteri?

Ecco il mio oggetto di dominio:

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

Ecco la mia azione di controllo (presa in gran parte dal 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

L'istruzione "if" è effettivamente eseguita? –

+0

Sì, ma è necessario verificare il tipo di contenuto. Ho dimenticato l'opzione esatta che deve essere impostata su true nel file Config.groovy. – Pat

risposta

3

Ecco una possibile soluzione che ho pensato di non appena ho presentato la domanda : Expando. Ecco le modifiche al metodo di controllo:

// 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, [:], [:]) 

che sto sfruttando il fatto che il plugin di esportazione cerca di ottenere un valore da un oggetto. Quindi, gli do un oggetto.

Se c'è una soluzione migliore, sarò più che felice di vederlo.

+0

l'Expendo non funziona su Grails 3.1 e versioni successive e export plugin excel-export: 2.1 –

Problemi correlati