grails - 在Grails中使用Jasper插件在新标签页中打开报告

标签 grails jasper-reports jasper-plugin

我正在使用jasper插件生成我的报告。一切都很好,但是当我想在新标签页中打开pdf时,它会在当前标签页上打开。

我不知道该怎么做。有人可以帮我吗?

我正在使用“i-report”设计我的pdf。这是我的代码如下:

 def index = {
        println(params)
        def testModel = this.getProperties().containsKey('chainModel') ? 
                       chainModel : null

        JasperReportDef report = null
        if (params.containsKey('auto_print_dialog')){

            report = docuJasperService.buildReportDefinition(params,
            request.getLocale(), testModel)
        }
        else{
            report = jasperService.buildReportDefinition(params, 
                     request.getLocale(), testModel)
        }
        generateResponse(report)
    }

    def generateResponse = {reportDef ->
        if (!reportDef.fileFormat.inline && !reportDef.parameters._inline) {
     //response.characterEncoding = "UTF-8"
      //response.setHeader("Content-disposition", 
      //"inline; filename=${params._name}");

          response.setHeader("Content-disposition", "inline; 
          filename="+(reportDef.parameters._name ?: reportDef.name) + 
                   "."+reportDef.fileFormat.extension);
            response.contentType = "application/pdf"
            response.outputStream << reportDef.contentStream.toByteArray()
        } else {

        render(text: reportDef.contentStream, contentType:
               reportDef.fileFormat.mimeTyp,
               encoding: reportDef.parameters.encoding ? 
               reportDef.parameters.encoding : 'UTF-8');

        }
    }

最佳答案

您将使用生成报告的链接来处理此问题。通常,添加目标_blank即可解决问题。例如:

<g:link controller="myReports" action="whateverReport" target="_blank">Click for your report</g:link>

这将在新选项卡中打开链接。

如果您使用的是表单,则向表单添加目标会将表单提交到新标签页。例如:
<form name="myForm" action="whateverReport" method="POST" target="_blank">

要么
<g:form name="myForm" controller="myReports" action="whateverReport" target="_blank">

如果需要,您甚至可以使用javascript window.open来执行此操作,但是由于其他地方对此文件进行了详细说明,因此我将其排除在示例之外。

关于grails - 在Grails中使用Jasper插件在新标签页中打开报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911163/

相关文章:

java - JasperReports 和 Struts2 : custom chart themes

ruby-on-rails - Ruby on Rails 中的 Jasper 报告

hibernate - 在Grails中延迟加载关联时如何修改Hibernate生成的SQL?

grails - 在调试时引发异常的Grails应用程序

hibernate - 为 UUID 配置 Grails/Hibernate/Postgres

java - Jasper Reports 日期不会根据给定格式更改

Grails 2.2 到 2.3 中的日期

java - 在java中设置Jasper Report的字体

java - 为什么我得到 Exception java.lang.NoClassDefFoundError org/codehaus/groovy/?