Как заставить подключаемый модуль Grails Export правильно работать с запросами критериев?

Я пытаюсь получить запрос Criteria для экспорта в CSV, Excel, что у вас есть. Проблема, с которой я сталкиваюсь, заключается в том, что код категорий работает чисто (например, не выдает никаких ошибок), но не генерирует никаких данных. Я точно знаю, что data - это ArrayList of List. У кого-нибудь есть обходной путь для этого, или скажите мне, если я делаю что-то не так?

Вот мой объект домена:

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

Вот действие моего контроллера (в основном взято со страницы плагина):

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

person Pat    schedule 11.01.2011    source источник
comment
Действительно ли выполняется оператор if?   -  person Hoàng Long    schedule 12.01.2011
comment
Да, но вы должны проверять тип контента. Я забыл точный параметр, который нужно переключить на true в файле Config.groovy.   -  person Pat    schedule 19.01.2011


Ответы (1)


Вот одно из возможных решений, о котором я подумал, как только задал вопрос: Expando. Вот изменения в методе контроллера:

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

Я использую тот факт, что плагин экспорта пытается получить значение из объекта. Итак, я даю ему объект.

Если есть лучшее решение, я буду более чем счастлив его увидеть.

person Pat    schedule 11.01.2011
comment
Expendo не работает на Grails 3.1 и выше и экспортирует плагин excel-export:2.1 - person No Idea For Name; 21.12.2017