【问题标题】:Open report in new tab using jasper plugin in grails使用 grails 中的 jasper 插件在新选项卡中打开报告
【发布时间】:2014-04-07 11:30:25
【问题描述】:

我正在使用 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');

        }
    }

【问题讨论】:

    标签: grails jasper-reports jasper-plugin


    【解决方案1】:

    这将由您用于生成报告的链接处理。通常添加 _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 来执行此操作,但我会将这个示例排除在此答案之外,因为它在其他地方都有详细记录。

    【讨论】:

    • 感谢您的回复。但我必须在按钮点击时做到这一点。请给个建议
    • 已编辑以包括如何通过表单提交来做到这一点。
    • target="_blank" 工作正常。非常感谢您宝贵的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多