我刚刚开始学习Grails,它看起来很棒。我目前正在使用Export插件。我有一个GSP表和一个提交按钮。单击该按钮应将表数据(域类的实例)导出到.csv文件。谁能帮我这个?我猜我可以在表中保存域模型实例id的隐藏字段,而不是使用jQuery获取所有这些id,并将Ajax作为JSON发送到控制器的操作,然后将其传递给exportService。我应该使用$ .ajax方法还是别的什么?或者有没有ajax这样做的方法?
我是Grails和jQuery / Ajax的新手,所以一些简单的例子会很棒。感谢。
编辑:
def results = bookCriteria.list(max: params.max as Integer, offset: params.offset as Integer) {
and {
'eq'("category","history")
ne("status", "Rented")
}
}
if(params?.format && params.format != "html"){
response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
response.setHeader("Content-disposition", "attachment; filename=report.${params.extension}")
exportService.export(params.format, response.outputStream, results, [:], [:])
}
我在控制器中有这样的东西。但它只返回前50行(因为分页)。如何设置分页但能够导出所有相应的行?
答案 0 :(得分:0)
如果用户可以修改表的值,您只需要将表中的数据发送到服务器。这真的是你的用例吗?如果不是 - 您不需要使用AJAX。
查看description of the plugin。在那里你可以找到一些基本的例子。
通常,您会对操作执行简单请求,获取要导出的数据,调用exportService
并按照插件页面上的说明修改response
。
插件页面的基本示例:
def list = {
if(!params.max) params.max = 10
if(params?.format && params.format != "html"){
response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
response.setHeader("Content-disposition", "attachment; filename=books.${params.extension}")
exportService.export(params.format, response.outputStream,Book.list(params), [:], [:])
}
[ bookInstanceList: Book.list( params ) ]
}
修改强> 以下是一些代码,了解如何在出口时获取所有书籍:
def results = bookCriteria.list {
and {
'eq'("category","history")
ne("status", "Rented")
}
if(!params?.format || params.format == "html") {
maxResults(params.max.toInteger())
firstResult(params.offset.toInteger())
}
}
您可以将if(!params?.format || params.format == "html")
替换为表示您不想列出所有结果的任何其他条件。希望有所帮助...