我是使用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期望这样,但不确定我是否收集了所有需要的内容以使其工作:
export(字符串类型,OutputStream outputStream,List对象,Map格式化程序,Map参数)}
我希望我已经清楚了解我的问题......提前致谢!
答案 0 :(得分: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)
考虑图书域类:
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, [:], [:])
}