0

我是使用 STS 3.2(grails 版本 2.2.0)的 Grails 中一个相当新的开发人员,我有一个应用程序,我想将数据从 GSP 导出为 PDF 格式。我已经安装了 Export 1.5 插件,并且有一个带有以下内容的 reportController:

def pdf = { results->
    def table = results['tables'][params.reportNum.toInteger()]
    def headers = table?.getAt(0).collect{ it.key }
    def rows = table*.collect{ cleanNull(it.value.toString()) } //data  
    exportService.export("$params.renderAs", response.outputStream, headers, rows, parameters)
}

有人可以帮我正确连接吗?我确实知道 exportService 期望这个,但不确定我是否收集了所有我需要让它工作的东西:

导出(字符串类型,OutputStream outputStream,列表对象,地图格式化程序,地图参数)}

我希望我的问题已经很清楚了......在此先感谢!

4

1 回答 1

0

该插件的示例具有params.format导出类型。你的内容是params.renderAs什么?看来该值必须是 的键之一grails.mime.types

if(params?.format && params.format != "html"){ 
    response.contentType = grailsApplication.config.grails.mime.types[params.format]
    response.setHeader("Content-disposition", "attachment; filename=books.${params.extension}")

    exportService.export(params.format, response.outputStream,Book.list(params), [:], [:]) 

}

所以在你的情况下renderAs应该有pdf.


好的,所以查看 ExportService 和您的代码示例,我认为您要使用的方法的签名是:

export(String type, OutputStream outputStream, List objects, List fields, Map labels, Map formatters, Map parameters)
  • 对象:将被导出的对象列表
  • fields:字段的名称,存在于将要导出的对象中
  • 标签:字段及其标签的地图
  • 格式化程序:可以是空地图
  • 参数:可以是空地图

考虑书籍领域类:

class Book {
    String title
    String author
}

您可以创建如下操作:

def pdf() {
    List fields = ["author", "title"]
    Map labels = [author: "Author", title: "Title"]
    exportService.export(params.format, response.outputStream, Book.list(params), fields, labels, [:], [:])
}
于 2013-04-16T21:29:59.433 回答