将GSP表数据发送到控制器

时间:2012-03-13 09:55:14

标签: jquery ajax json grails export

我刚刚开始学习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行(因为分页)。如何设置分页但能够导出所有相应的行?

1 个答案:

答案 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")替换为表示您不想列出所有结果的任何其他条件。希望有所帮助...