grails - 绕过 Grails View 层将二进制内容直接写入客户端

标签 grails

以下操作旨在写入 bytes 的二进制内容直接到客户端完全绕过 Grails View 层:

def actionName = {
  byte[] bytes = ...
  ServletOutputStream out = response.getOutputStream()
  out.write(bytes)
  out.flush()
  out.close()
  return false
}

我的印象是return false会使 Grails 完全跳过 View 层。然而,情况似乎并非如此,因为上述代码仍然使 Grails 搜索 /WEB-INF/grails-app/views/controllerName/actionName.jsp (由于 404 失败,因为不存在这样的文件)。

题:
  • 鉴于上面的代码,我如何完全绕过 Grails 中的 View 层?
  • 最佳答案

    您应该返回 null 或什么都不返回,这被解释为 null。以下是发送动态生成的 PDF 的操作中的一些工作代码:

    def pdf = {
       byte[] content = ...
       String filename = ...
       response.contentType = 'application/octet-stream'
       response.setHeader 'Content-disposition', "attachment; filename=\"$filename\""
       response.outputStream << content
       response.outputStream.flush()
    }
    

    关于grails - 绕过 Grails View 层将二进制内容直接写入客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1655872/

    相关文章:

    javascript - Grails:更改 img src 的 JS 函数没有响应

    java - Grails 2.4.5 如何连接对应用程序上下文的引用?

    grails - 域内域

    sql - 在grails准备好的语句上使用like时引发异常

    tomcat - Grails 不在 Tomcat 环境中编译

    spring - 在grails中发布升级spring插件

    Grails:如何使用当前本地化获取 i18 消息?

    grails - grails从attrs创建模型

    grails - 对地址栏中直接插入的链接进行Geb测试

    testing - 不使用 test-app 进行日志记录; chalice 3.2.9