【问题标题】:How do I get the Grails Export plugin to work correctly with criteria queries?如何让 Grails Export 插件与标准查询一起正常工作?
【发布时间】:2011-06-07 09:46:00
【问题描述】:

我正在尝试将 Criteria 查询导出为 CSV、Excel,你有什么。我遇到的问题是类别代码运行干净(如,不会抛出任何错误),但它不会生成任何数据。我知道data 是一个列表的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, [:], [:])
}

【问题讨论】:

  • “if”语句真的执行了吗?
  • 是的,但您必须检查内容类型。我忘记了需要在 Config.groovy 文件中切换为 true 的确切选项。

标签: grails export grails-plugin


【解决方案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, [:], [:])

我正在利用 Export 插件试图从对象中获取值的事实。所以,我给它一个对象。

如果有更好的解决方案,我会很高兴看到它。

【讨论】:

  • Expendo 不适用于 grails 3.1 及更高版本并导出插件 excel-export:2.1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2015-08-10
  • 1970-01-01
相关资源
最近更新 更多