2014-04-07 40 views
0

我正在使用jasper插件來生成我的報告。一切都很好,但除了我的pdf在當前選項卡上打開時,我想在新選項卡中打開它。在grails中使用jasper插件在新選項卡中打開報告

我不知道該怎麼做。有誰可以請幫助我嗎?

我正在使用「我的報告」來設計我的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'); 

     } 
    } 

回答

4

這將通過鏈接來處理您使用生成報告。通常添加一個_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這樣做,但我會離開這個例子了這個答案,因爲它是在其他地方記錄。

+0

感謝您的回覆。但我必須在按鈕點擊時完成。建議請 –

+0

編輯包括如何做到這一點與表單提交。 –

+0

target =「_ blank」正常工作。非常感謝您寶貴的時間。 –