在grails中使用jasper插件在新选项卡中打开报告 [英] Open report in new tab using jasper plugin in grails
问题描述
我使用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(报告)
}
def generateResponse = {reportDef - >
if(!reportDef.fileFormat.inline&&!reportDef.parameters._inline){
//response.characterEncoding =UTF-8
//response.setHeader( Content-disposition,
//inline; filename = $ {params._name});
$ b $ 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');
$ b
这将由您用来生成报告的链接处理。通常添加一个_blank的目标将做到这一点。例如:
< g:link controller =myReportsaction =whateverReporttarget =_ blank>点击为您的报告< / g:link>
这会打开新标签中的链接。
如果您使用表单添加目标到表单将提交表单到一个新的选项卡。例如:
< form name =myFormaction =whateverReportmethod =POSTtarget =_ blank >
或
< g:form name =myFormcontroller =myReportsaction =whateverReporttarget =_ blank>
您甚至可以使用javascript window.open $ c $如果你需要的话,但我会把这个例子留在这个答案中,因为它在其他地方有很好的记录。
I am using jasper plugin to generate my report. All is fine but except my pdf is opening on the current tab, when I want to open it in a new tab.
I have no idea how to do it. Can anybody please help me on this please?
I am using "i-report" to design my pdf. Here is my code below :
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');
}
}
This is going to be handled by the link you use to generate the report. Typically adding a target of _blank will do the trick. For example:
<g:link controller="myReports" action="whateverReport" target="_blank">Click for your report</g:link>
This will open the link in a new tab.
If you are using a form adding target to the form will submit the form to a new tab. For example:
<form name="myForm" action="whateverReport" method="POST" target="_blank">
or
<g:form name="myForm" controller="myReports" action="whateverReport" target="_blank">
You could even do so with javascript window.open
if you needed, but I will leave that example out of this answer as it's well documented elsewhere.
这篇关于在grails中使用jasper插件在新选项卡中打开报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!