2011-01-11 7 views
5

Próbuję uzyskać zapytanie Kryteria do eksportu do CSV, Excel, co ty. Problem, na który napotykam, polega na tym, że kod kategorii działa czysto (jak w przypadku, nie powoduje błędów), ale nie generuje żadnych danych. Wiem na pewno, że data jest ArrayList of List. Ktoś ma obejście tego problemu, lub powiedz mi, czy robię coś nie tak?Jak uzyskać wtyczkę Grails Export, aby działała poprawnie z zapytaniami o kryteria?

Oto mój obiekt domeny:

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

Oto moje działania kontroler (zaczerpnięte głównie z 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

Czy rzeczywiście wykonano instrukcję "jeśli"? –

+0

Tak, ale musisz sprawdzić rodzaj zawartości. Zapomniałem dokładnej opcji, która musi zostać zmieniona na true w pliku Config.groovy. – Pat

Odpowiedz

3

Oto jeden z możliwych rozwiązań, które myślałem, jak tylko przedstawiła pytanie : Expando. Oto zmiany w metodzie kontrolera:

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

ja wykorzystując fakt, że plugin Export stara się uzyskać wartość z obiektu. Tak, daję temu przedmiot.

Jeśli jest lepsze rozwiązanie, będę bardziej niż szczęśliwy, kiedy go zobaczę.

+0

Expendo nie działa na grails 3.1 i wyżej i eksportuj wtyczki excel-export: 2.1 –