我正在研究Grails应用程序,我需要显示一些报告,并允许用户以最常见的格式(PDF,
XML …)导出它们.
我不想将SQL查询嵌入到报表定义中,报表逻辑已集成到Grails服务中,我正在寻找的报表库应该在没有真实数据源的数据集(可能是地图列表)上工作.
我使用Jasper Reports和iReport进行测试,它们与Grails一起用于导出功能(PDF,XML,HTML).但我很难将它们包含在我的页面模板中.我想在报告html中有我的页眉,页脚,导航菜单和过滤器.
我想到的唯一解决方案是使用iframe,但我不喜欢这么多.
贾斯珀报告可以解决我的要求吗?你知道任何其他Java报告库,它允许我在我的HTML正文中包含报告吗?
最佳答案 您可以使用
g:include
tag来包含控制器的响应:
<g:include controller="myJasper" action="showReport"
params="[foo: 'bar', baz: 42]" />
使用Grails Jasper plugin,您的控制器将包含如下代码:
import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat;
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef;
class MyJasperController {
def jasperService
def showReport = {
def reportDef = new JasperReportDef(
name: 'your_report.jasper',
parameters: params,
fileFormat: JasperExportFormat.HTML_FORMAT)
def report = jasperService.generateReport(reportDef)
.toByteArray().toString("UTF-8")
render report
}
}