我正在尝试将Criteria查询导出为CSV,Excel,你有什么。我遇到的问题是类别代码运行干净(如,不会抛出任何错误),但它不会生成任何数据。我知道data
是List的ArrayList这一事实。任何人都有解决方法,或告诉我,我做错了什么?
这是我的域名对象:
class Machine {
String name,
category
// constraints, etc
}
这是我的控制器操作(主要来自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 :(得分:3)
这是我提交问题时想到的一种可能的解决方案: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, [:], [:])
我正在利用Export插件尝试从对象获取值的事实。所以,我给它一个对象。
如果有更好的解决方案,我会非常乐意看到它。