我刚开始学习Grails,它看起来很棒。我目前正在使用导出插件。我在GSP中有一个表格和一个提交按钮。单击该按钮应将表数据(域类的实例)导出到.csv文件。谁能帮我这个?我猜我可以在表中保存域模型实例id的隐藏字段,而不是使用jQuery获取所有这些id,然后使用Ajax作为JSON发送给控制器的操作,并将其传递给exportService。我应该使用$ .ajax方法还是其他?或者有没有办法做到这一点,没有Ajax?发送GSP表格数据到控制器
我对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行(由于分页)。如何管理分页,但能够导出所有相应的行?
是的,但如果我不想导出所有域类实例呢?例如,如果我在GSP表中做了某种过滤,那么只有一些我的域类实例?我错过了什么吗? – johndoe 2012-03-13 10:56:40
这只是一个例子。你可以用任何其他的实例列表替换'Book.list(params)'。要创建要导出的实例列表,可以使用各种groovy/grails方法([criteria](http://grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html),[query] (http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html),[finder](http://grails.org/doc/latest/ref/Domain%20Classes/findAllBy.html)等)来选择你的disired实例。你如何过滤你的GSP表的实例? – aiolos 2012-03-13 11:11:48
我在action中使用了类似def的bookList = Book.executeQuery(“select ...”),并将其传递给GSP [bookInstanceList:bookList,bookInstanceTotal:bookList.count()] – johndoe 2012-03-13 11:32:49