从控制器渲染文件

时间:2014-09-18 14:50:31

标签: grails gorm render

我正在处理grails应用程序,并努力将文本呈现到文件中。目前,我可以使用下面的函数将文本渲染到屏幕上:

    def generateTemplateSQL(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)
    render result
  }

现在我希望能够将相同的文本打印到文件中,这就是我在下面的内容。但是,我为此功能创建的前端按钮一旦按下就会导致404错误。我猜我有些不合时宜的东西。有什么想法吗?

    def writeTemplateSQLToFile(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)
    render (file: new File(result), fileName: "TemplateSQL.met", contentType: "text/met")
  }

2 个答案:

答案 0 :(得分:0)

render (file: new File(..), fileName: "TemplateSQL.met" ...)从服务器的文件系统中读取给定文件,并将其作为响应发送给客户端。在您的情况下,result变量应表示文件系统上“TemplateSQL.met”文件所在位置的绝对路径。

我不认为这是你的情况。如果要将结果变量的内容保存到文件,请使用FileOutputStream

答案 1 :(得分:0)

试试这个:

def writeTemplateSQLToFile(Template templateInstance){

    def result = templatingService.buildTemplateSql(templateInstance)

    response.setHeader("Content-disposition", "filename=TemplateSQL.met")
    response.contentType = 'text/met'
    response.outputStream << result
    response.outputStream.flush()
}