【发布时间】:2017-10-13 19:38:57
【问题描述】:
我没有使用 PDF 插件。我只是使用 Jasper 的 Java API。一切正常。 PDF 在单独的窗口中打开。我遇到的问题是当没有找到数据时,它仍然会在浏览器中打开一个空白选项卡。我正在尝试拦截它并显示一条消息,而不是没有数据,但我尝试过的任何方法都不起作用。
这是来自控制器的代码 sn-p:
projAccomps = projAccomps.findAll { ProjectAccomplishment pa ->
pa.workDate >= startDate && pa.workDate <= endDate
}
// I'd like to be able to check right here for no data
// and send back a message instead
//
// if (projAccomps.size() < 1) ...
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(projAccomps)
String jasperFile =
grailsApplication.mainContext
.getResource('reports/accomplishment-listing.jasper')
.file
.getAbsoluteFile()
// Report parameter
Map<String, String> reportParam = new HashMap<String, String>()
String projectQuery = "All projects"
String dateRange = ""
Boolean allProjects = true
if (params.project) {
projectQuery = project.name
allProjects = false
}
if (params.startDate) {
dateRange = startDate.format('MM/dd/yyyy')
}
if (params.endDate) {
dateRange += " - " + endDate.format('MM/dd/yyyy')
}
String reportCriteria = "Work Order: ${wo.workOrderNumber}, Project(s): ${projectQuery}, Dates: ${dateRange}"
reportParam['report_criteria'] = reportCriteria
reportParam['all_projects'] = allProjects
JasperPrint print = JasperFillManager.fillReport(jasperFile, reportParam, ds );
byte[] bytes = JasperExportManager.exportReportToPdf(print)
render(file: bytes, contentType: 'application/pdf')
我尝试过 Jquery.ajax 并尝试在成功函数中抓取 PDF 数据或消息,但那是一场灾难。
有人对如何做到这一点有任何想法吗?
【问题讨论】:
-
以上是通过ajax调用的吗?